2012-05-18 16 views
5

Android İşlem Çubuğu setActionView görünüyor. Görüntünün altında görebildiğiniz gibi 'hedef' simgesi, düzeni içinde doğru bir şekilde ortalanır. Ama benActionBar'ı (ilerlemeyi) ayarladığımda, ilerleme görünümü her zaman denediğim her şeyde sağa hizalıdır. İşte after clicking the menu itemBen ICS</p> <p>yılında İşlem Çubuğu gelen setActionView kullanmaya çalışıyorum düzen sorunu

before clicking the menu item

önce ve menü öğesi tıkladıktan sonra, 2 durumlardır. Gördüğünüz gibi ilerleme görünümü her zaman sağa hizalanır. İlerleme düzenimi xml'deki yerçekimi seçeneklerini soldan sağa doğru değiştirmeyi denedim ve ne yaparsam değiştirirsem hiçbir şey değişmiyor gibi görünüyor.

Bu sorunla ilgili herhangi bir bilgi bulamadım, bu yüzden yanlış bir şey yapmam gerektiğini düşünüyorum.

Herkesin bir ipucu var mı? Yardım için teşekkürler!

İşte benim testx Etkinliği benim işlem çubuğu menü düzeni 'action_bar_menu.xml'

<?xml version="1.0" encoding="utf-8"?> 
<menu xmlns:android="http://schemas.android.com/apk/res/android"> 
    <item android:id="@+id/locate" 
      android:title="locate" 
      android:icon="@drawable/locate" 
      android:showAsAction="ifRoom|withText" /> 
</menu> 

İşte sonunda burada benim progressbar düzeni 'inderterminate_progress.xml'

<FrameLayout xmlns:android="http://schemas.android.com/apk/res/android" 
      android:layout_width="match_parent" 
      android:layout_height="match_parent" 
      android:gravity="center"> 

    <ProgressBar android:layout_width="25dp" 
       android:layout_height="25dp" 
       android:layout_gravity="center" 
       android:indeterminate="true" 
       style="?android:attr/progressBarStyleInverse"/> 
</FrameLayout> 

var Ve bulunuyor var

public class HelloAndroidActivity extends Activity { 

    /** 
    * Called when the activity is first created. 
    * @param savedInstanceState If the activity is being re-initialized after 
    * previously being shut down then this Bundle contains the data it most 
    * recently supplied in onSaveInstanceState(Bundle). <b>Note: Otherwise it is null.</b> 
    */ 
    @Override 
    public void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 
     setContentView(R.layout.main); 
     getActionBar().setTitle("Test"); 
    } 

    @Override 
    public boolean onCreateOptionsMenu(Menu menu) { 
     getMenuInflater().inflate(R.menu.action_bar_menu, menu); 
     return true; 
    } 

    @Override 
    public boolean onOptionsItemSelected(MenuItem item) { 
     super.onOptionsItemSelected(item); 


     if (R.id.locate == item.getItemId()) { 

      final MenuItem menuItem = item.setActionView(R.layout.inderterminate_progress); 

      new Thread(new Runnable() { 
       @Override 
       public void run() { 
        SystemClock.sleep(3000); 
        runOnUiThread(new Runnable() { 
         @Override 
         public void run() { 
          menuItem.setActionView(null); 
         } 
        }); 
       } 
      }).start(); 
     } 

     return true; 
    } 
} 

cevap

9

Görünüşe göre stili açık bir şekilde tanımlamak ve bir 4dip dolgu eklemek düzeni kök olarak aşağıda gösterilen bu sorunu

<ImageView xmlns:android="http://schemas.android.com/apk/res/android" 
    android:layout_width="wrap_content" 
    android:layout_height="wrap_content" 
    android:layout_gravity="center" 
    android:paddingLeft="4dip" 
    android:paddingRight="4dip" 
    style="?android:attr/actionButtonStyle" /> 

Bu biraz geç android stil sayfası here

+0

Evet tamamen haklısın :). Yardım için Thx çok takdir ediyor. –

3

kullanılacak gibi görünüyor ama doğru çözüm 4DP gibi mutlak bir değer değil çözer şişirmek. doğru yaklaşım ABS değerlerine minWidth ayarlamaktır:

android:minWidth="@dimen/abs__action_button_min_width" 

Örnek ilerleme çubuğu:

<?xml version="1.0" encoding="utf-8"?> 

<ProgressBar xmlns:android="http://schemas.android.com/apk/res/android" 
      android:minWidth="@dimen/abs__action_button_min_width" 
      android:layout_width="wrap_content" 
      android:layout_height="wrap_content" 
      android:focusable="true" 
      android:layout_gravity="center" 
      style="@android:style/Widget.ProgressBar.Small"/> 
İlgili konular