自定义操作栏视图布局中的Android搜索

时间:2015-07-03 13:47:40

标签: android search android-actionbar

我使用布局文件夹中的自定义布局为操作栏设置customview

以下是操作栏布局的代码。

custom_actionbar_home_page.xml

<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="fill_parent"
android:layout_height="60.0dip"
android:background="@drawable/b_header_strip" >

<TextView
    android:id="@+id/title_text"
    android:layout_width="wrap_content"
    android:layout_height="fill_parent"
    android:layout_toLeftOf="@+id/search_btn"
    android:layout_toRightOf="@+id/imageView1"
    android:gravity="center"
    android:paddingRight="15.0dip"
    android:text="Dreamrun"
    android:textAppearance="?android:textAppearanceLarge"
    android:textColor="#ffffffff"
    android:textStyle="bold" />

<ImageView
    android:id="@+id/imageView1"
    android:layout_width="35.0dip"
    android:layout_height="35.0dip"
    android:layout_alignParentLeft="true"
    android:layout_centerVertical="true"
    android:layout_marginLeft="8.0dip"
    android:src="@drawable/ic_launcher" />

<ImageButton
    android:id="@+id/search_btn"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:layout_centerVertical="true"
    android:layout_toLeftOf="@+id/love_btn"
    android:background="@null"
    android:src="@drawable/ic_search_header"
    android:actionViewClass="android.widget.SearchView"/>

<ImageButton
    android:id="@+id/love_btn"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:layout_alignParentRight="true"
    android:layout_centerVertical="true"
    android:background="@null"
    android:src="@drawable/ic_whishlist" />

</RelativeLayout>

以下是onCreate方法中的活动代码:

actionBar = getActionBar();
        actionBar.setDisplayShowHomeEnabled(false);
        actionBar.setDisplayShowTitleEnabled(false);
        Singleton.getInstance(getApplicationContext());


        View localView =          LayoutInflater.from(this).inflate(R.layout.custom_actionbar_home_page, null);
        mTitleTextView = ((TextView)localView.findViewById(R.id.title_text));
        mTitleTextView.setText("DREAMRUN");
        ImageButton localImageButton = (ImageButton)localView.findViewById(R.id.search_btn);


        SearchManager searchManager = (SearchManager) getSystemService(Context.SEARCH_SERVICE);
        final SearchView searchView = (SearchView) localView.findViewById(R.id.search_btn);
        SearchableInfo searchableInfo = searchManager.getSearchableInfo(getComponentName());
        searchView.setSearchableInfo(searchableInfo);


        actionBar.setCustomView(localView);
        actionBar.setDisplayShowCustomEnabled(true);
        actionBar.setDisplayOptions(ActionBar.DISPLAY_SHOW_CUSTOM | ActionBar.DISPLAY_SHOW_HOME); 

我的问题是当我点击search_btn时显示编辑文字以输入搜索关键字。它应该与菜单中的搜索功能相同。

但在我Activity我正在使用菜单文件中的动作图标。我正在使用actionbar的自定义布局。

请给我一个解决方案,在没有菜单文件的情况下,从自定义布局(actionbar)实现搜索功能。

感谢。

1 个答案:

答案 0 :(得分:0)

你无法投射&#39; ImageButton&#39;作为&#39; SearchView&#39;

final SearchView searchView (SearchView)localView.findViewById(R.id.search_btn);

请参阅此link