android - مركز سيرتشفيو في شريط العمل




android-actionbar searchview (2)

كيف يمكنني مركز أكتيونفيو (سيرتشفيو على وجه الخصوص) داخل شريط الإجراءات؟

كما هو موضح في تطبيق كتب غوغل:

تطبيق كتب غوغل سيرتشفيو 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>

هل هناك طريقة لمحاكاة سلوك "سيرتشفيو" في الكتب؟


إلقاء نظرة هنا . يمكنك فقط استخدام الروبوت: أكتيونفيوكلاس = "android.widget.SearchView" السمة، والتي يجب أن تعمل على ما يرام (نضع في اعتبارنا أنه يمكنك الحصول على مرجع إلى سيرفيسيو في جافا، وتغيير تلميح هناك إذا كان هذا ما تريد ).


لا يمكن تحقيق View في محور ActionBar مع Action Items في xml menu ، بقدر ما أستطيع أن أقول. ومع ذلك فإنه يمكن تنفيذها عن طريق وضع تخطيط مخصص ل 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 '':

لاحظ السمة iconifiedByDefault تعيين إلى SearchView على SearchView الذي يجبر على أن تظهر الموسعة وليس فقط كرمز. قد يتطلب هذا إخفاء لوحة المفاتيح برمجيا أو سيتم إطلاقه مفتوحا عند بدء النشاط.





searchview