2012-05-18 15 views
5

मैं आईसीएसएंड्रॉयड ActionBar setActionView लेआउट मुद्दा

में ActionBar से setActionView उपयोग करने की कोशिश कर रहा है लगता है जैसे कि यह सीधे आगे होना चाहिए लेकिन किसी भी तरह मैं लेआउट संरेखण है कि मैं के लिए आशा नहीं मिल रहा है। जैसा कि आप 'लक्ष्य' आइकन के नीचे की छवि में देख सकते हैं, इसके लेआउट के भीतर सही ढंग से केंद्रित है। लेकिन जब मैं एक्शनबार (प्रगति) सेट करता हूं तो प्रगति दृश्य हमेशा जो कुछ भी मैं कोशिश करता हूं, उसे हमेशा गठबंधन करता है।

before clicking the menu item after clicking the menu item

यहाँ से पहले और मेनू आइटम क्लिक करने के बाद, 2 राज्य हैं। जैसा कि आप देख सकते हैं कि प्रगति दृश्य हमेशा दाईं ओर गठबंधन होता है। मैंने अपने प्रगति लेआउट xml में गुरुत्वाकर्षण विकल्पों को बाएं से दाएं से केंद्र तक बदलने की कोशिश की है और जो कुछ भी मैं बदलता हूं, वह कुछ भी बदलने में प्रतीत नहीं होता है।

मुझे इस समस्या से संबंधित कोई जानकारी नहीं मिली है, इसलिए मुझे लगता है कि मुझे कुछ गलत करना होगा।

क्या किसी के पास कोई सुराग है? मदद के लिए धन्यवाद!

यहाँ मेरी क्रिया बार मेनू लेआउट '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> 

यहाँ मेरी प्रगति लेआउट '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> 

अंत में यहाँ है और है मेरी testx गतिविधि है

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; 
    } 
} 

उत्तर

9

ऐसा लगता है कि शैली को स्पष्ट रूप से परिभाषित करना और 4 डीप पैडिंग जोड़ना लेआउट के रूट के रूप में नीचे दिखाया गया है को बढ़ाने के लिए इस मुद्दे को

<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" /> 

यह एक छोटी सी देर एंड्रॉयड स्टाइलशीट here

+0

हाँ, आप पूरी तरह से सही हो :)। मदद के लिए Thx यह बहुत सराहना की है। –

3

में इस्तेमाल किया जा रहा है लेकिन सही समाधान एक निरपेक्ष मान 4dp रूप में इस तरह नहीं है हल करती है। सही दृष्टिकोण एबीएस मूल्यों के minWidth स्थापित करने के लिए है:

android:minWidth="@dimen/abs__action_button_min_width" 

उदाहरण प्रगति बार:

<?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"/> 
संबंधित मुद्दे