像Youtube app一样的Searchview

时间:2015-09-17 09:28:14

标签: android search android-fragments youtube

我想要实现的是用户搜索应用程序的能力。我想在Youtube应用程序中执行类似于下面的屏幕截图中的内容

enter image description here

问题是我不知道如何在我的应用程序中实现它。

我已经开始使用选项菜单,但由于某种原因,图标不会显示在工具栏

我的代码:

<menu xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:app="http://schemas.android.com/apk/res-auto"
    xmlns:tools="http://schemas.android.com/tools"
    tools:activity=".ProductsNewOrder">
    <item android:id="@+id/search"
        android:title="@string/search"
        android:visible="true"
        android:icon="@android:drawable/ic_menu_search"
        app:actionViewClass="android.support.v7.widget.SearchView"
        app:showAsAction="always" />
    <item android:id="@+id/cart"
        android:title="Cart"
        android:visible="true"
        android:icon="@drawable/abc_ic_menu_share_mtrl_alpha"
        app:showAsAction="always" />
</menu>

searchable.xml

<?xml version="1.0" encoding="utf-8"?>
<searchable xmlns:android="http://schemas.android.com/apk/res/android"
    android:label="@string/search"
    android:hint="@string/search" >
</searchable>

的Manifest.xml

                                            

我在哪里创建选项菜单:

public class ProductsViewOrder extends FragmentActivity {

    private ViewPager viewPager;
    private ProductsTabPagerAdapter mAdapter;
    private PagerSlidingTabStrip tabs;

    @TargetApi(Build.VERSION_CODES.LOLLIPOP)
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.new_order);
        getActionBar().setElevation(0);
        viewPager = (ViewPager) findViewById(R.id.pager);
        Intent intent = getIntent();
        String title = intent.getStringExtra("tableID");
        getActionBar().setTitle(getString(R.string.table_id) + title);
        mAdapter = new ProductsTabPagerAdapter(getSupportFragmentManager(), ProductsViewOrder.this, ProductsViewOrder.this);
        viewPager.setAdapter(mAdapter);
        tabs = (PagerSlidingTabStrip) findViewById(R.id.tabs);
        tabs.setViewPager(viewPager);
        tabs.setDividerColor(Color.TRANSPARENT);
        tabs.setIndicatorColor(Color.WHITE);
        tabs.setIndicatorHeight(6);

    }


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



    @Override
    public boolean onOptionsItemSelected(MenuItem item) {
        switch (item.getItemId()){
            case R.id.search:{
                return true;
            }
            case R.id.cart:{
                return true;
            }
            default:{
                return super.onOptionsItemSelected(item);
            }
        }
    }

    private void showSearchResults() {

    }

    @Override
    public void onBackPressed() {
        super.onBackPressed();
        overridePendingTransition(R.anim.slide_out_left, R.anim.slide_in_left);
    }
}

当我点按搜索图标时,没有任何反应。

任何人都可以帮助我吗?

1 个答案:

答案 0 :(得分:1)

您可以使用PersistentSearch库link

只需使用google进行简单搜索:)