2012-12-07 18 views
14

मैं एक्शन बार के अंदर एक्शन व्यू (विशेष रूप से एक खोज दृश्य) कैसे केंद्रित कर सकता हूं?एक्शन बार में सेंटर सर्च व्यू

के रूप में Google Play पुस्तकें ऐप्स में देखी गई:

    Google Books app SearchView http://i46.tinypic.com/2z909is.png

मेरे वर्तमान लेआउट सेटअप (search_layout.xml):

<?xml version="1.0" encoding="utf-8"?> 
<SearchView 
    xmlns:android="http://schemas.android.com/apk/res/android" 
    android:layout_width="wrap_content" 
    android:layout_height="wrap_content" 
    android:queryHint="@string/search_hint" /> 

मेरे कार्यवाही बार एक्सएमएल फ़ाइल (menu.xml) :

<?xml version="1.0" encoding="utf-8"?> 
<menu xmlns:android="http://schemas.android.com/apk/res/android"> 
    <item 
     android:icon="@+android:drawable/ic_menu_search" 
     android:title="@string/search" 
     android:showAsAction="always|collapseActionView" 
     android:id="@+id/searchMenuItem" 
     android:actionLayout="@layout/search_layout" /> 
</menu> 

क्या पुस्तकें 'खोज दृश्य' के व्यवहार की नकल करने का कोई तरीका है?

+0

क्या आपने एंड्रॉइड की कोशिश की है: layout_gravity = "center_horizontal"? – MillyMonster

+0

हां, लेकिन कोई फायदा नहीं हुआ। – Whymarrh

+0

हम्म अजीब। आप किस प्रकार का लेआउट उपयोग कर रहे हैं? – MillyMonster

उत्तर

17

एक ViewActionBar में केंद्रित है, एक xml menu में Action Items के साथ प्राप्त नहीं किया जा सकता जहाँ तक मैं बता सकता है। हालांकि इसे ActionBar पर कस्टम लेआउट सेट करके कार्यान्वित किया जा सकता है। एक बुनियादी उदाहरण:

एक Activity:

public class MainActivity extends Activity { 

    @Override 
    public void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 
     setContentView(R.layout.activity_main); 

     ActionBar actionBar = getActionBar(); 
     actionBar.setDisplayOptions(ActionBar.DISPLAY_SHOW_CUSTOM); 
     actionBar.setDisplayShowHomeEnabled(true); 
     actionBar.setCustomView(R.layout.actionbar_layout); 
    } 

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

} 

जहां actionbar_layout है:

<?xml version="1.0" encoding="utf-8"?> 
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" 
    android:layout_width="match_parent" 
    android:layout_height="match_parent"> 
    <SearchView 
     android:id="@+id/mySearchView" 
     android:layout_width="wrap_content" 
     android:layout_height="wrap_content" 
     android:layout_centerInParent="true" 
     android:iconifiedByDefault="false" /> 
</RelativeLayout> 

एक 7 'टैबलेट पर इस बनाता है:

enter image description here

नोट iconifiedByDefault विशेषतापर सेट है SearchView परजो इसे विस्तारित करने के लिए मजबूर करता है और न कि आइकन के रूप में। इसके लिए आपको hide the softkeyboard programmatically की आवश्यकता हो सकती है या गतिविधि शुरू होने पर इसे लॉन्च किया जाएगा।

+0

मुझे पता है कि यह मेरे पास मौजूद छवि से दिखाई नहीं दे रहा है, लेकिन पुस्तक ऐप में 'सर्च व्यू' डिफ़ॉल्ट रूप से प्रतीक है, और फिर विस्तार पर एक्शन बार में स्वयं केंद्रित है। क्या यह एक कस्टम व्यू के साथ करने योग्य है? – Whymarrh

+2

मेरे उत्तर में लेआउट के साथ, यदि आप iconifiedByDefault = true से शुरू करते हैं और फिर आइकन टैप करें, तो यह स्वयं एक्शनबार में केंद्रित होगा। लेकिन मुझे नहीं पता कि आप गैर-विस्तारित आइकन की आरंभिक स्थिति कहां चाहते हैं। इस उदाहरण का प्रयास करें, iconifiedByDefault को सत्य पर सेट करें और देखें कि यह वही है जो आप चाहते हैं। यदि नहीं, और यदि उदाहरण के लिए आप आइकन को शुरू करने के लिए बहुत दूर दाईं ओर चाहते हैं और उसके बाद विस्तार पर क्लिक करें, तो क्लिक करें, आपको क्लिक ईवेंट को सुनना होगा और कस्टम लेआउट के लेआउट पैरामीटर को गतिशील रूप से संरेखित करना होगा। केंद्र में माता-पिता –

-1

here पर एक नज़र डालें। आप केवल एंड्रॉइड का उपयोग कर सकते हैं: actionViewClass = "android.widget.SearchView" विशेषता, और यह ठीक काम करना चाहिए (ध्यान रखें कि आप जावा में सर्च व्यू का संदर्भ प्राप्त कर सकते हैं, और अगर आप यही चाहते हैं तो इशारा बदल सकते हैं)।