2017-09-20 3 views
1

ツールバーにSearchViewがあり、デフォルトの戻るボタンのアイコンを変更したいと思います。SearchViewの戻るボタンを変更する方法

これは私のツールバーです:

<?xml version="1.0" encoding="utf-8"?> 
<android.support.v7.widget.Toolbar 
    xmlns:android="http://schemas.android.com/apk/res/android" 
    xmlns:app="http://schemas.android.com/apk/res-auto" 
    android:id="@+id/my_awesome_toolbar" 
    android:layout_width="fill_parent" 
    android:layout_height="?android:attr/actionBarSize" 
    app:titleTextColor="@android:color/black" 
    android:elevation="5dp"> 

</android.support.v7.widget.Toolbar> 

そして、これが私のSearchViewのレイアウトです:

<?xml version="1.0" encoding="utf-8"?> 
<menu xmlns:android="http://schemas.android.com/apk/res/android" 
    xmlns:app="http://schemas.android.com/apk/res-auto"> 

    <item android:id="@+id/search" 
     android:title="@string/search" 
     app:icon="@drawable/ic_search_black_24dp" 
     android:icon="@drawable/ic_search_black_24dp" 
     app:showAsAction="always|collapseActionView" 
     android:maxWidth="50dp" 
     app:actionViewClass="android.support.v7.widget.SearchView"/> 

</menu> 

そして、これは私が私の活動で私のオプションのメニューを作成する方法である:

@Override 
public boolean onCreateOptionsMenu(Menu menu) { 
    getMenuInflater().inflate(R.menu.menu_search_team, menu); 

    SearchManager searchManager = (SearchManager) 
      getSystemService(Context.SEARCH_SERVICE); 
    searchMenuItem = menu.findItem(R.id.search); 

    searchView = (SearchView) searchMenuItem.getActionView(); 

    ImageView searchClose = (ImageView) searchView.findViewById(android.support.v7.appcompat.R.id.search_close_btn); 
    searchClose.setImageResource(R.drawable.ic_action_cancel_black); 
    searchClose.setVisibility(View.VISIBLE); 

    LinearLayout.LayoutParams params = (LinearLayout.LayoutParams) searchClose.getLayoutParams(); 
    params.gravity = Gravity.RIGHT; 
    searchClose.setLayoutParams(params); 

    searchClose.setOnClickListener(new View.OnClickListener() { 

     @Override 
     public void onClick(View v) { 

      //Clear query 
      searchView.setQuery("", false); 
      //Collapse the action view 
      searchView.onActionViewCollapsed(); 
      //Collapse the search widget 
      searchMenuItem.collapseActionView(); 

      listview.setVisibility(View.GONE); 

      viewPager.bringToFront(); 

      appBarLayout.setVisibility(View.VISIBLE); 
     } 
    }); 

    for (TextView textView : findChildrenByClass(searchView, TextView.class)) { 
     textView.setTextColor(Color.BLACK); 
     textView.setHintTextColor(Color.BLACK); 
    } 

    searchView.setSearchableInfo(searchManager. 
      getSearchableInfo(getComponentName())); 
    searchView.setSubmitButtonEnabled(true); 
    searchView.setOnQueryTextListener(this); 

    return true; 
} 

出力は次のとおりです。

enter image description here

私が望むのは、このアイコンを右に隠すか、アイコンを自分のアクティビティについて投稿したコードのImageViewとして定義している "x"イメージに変更することです。

答えて

1

スタイルを変更するのが最も簡単です。ここで

<style name="Theme.myCustomThemeForMyApp" parent="android:Theme.Holo"> 
<item name="android:homeAsUpIndicator">@drawable/myCustomUpIndicator</item> 

私はさらに支援するために変更されます。

<!-- Base application theme. --> 
<style name="AppTheme" parent="Theme.AppCompat.Light.NoActionBar"> 
    <!-- Customize your theme here. --> 
    <item name="colorPrimary">@color/colorPrimary</item> 
    <item name="colorPrimaryDark">@color/colorPrimaryDark</item> 
    <item name="colorAccent">@color/colorAccent</item> 
    <item name="android:windowBackground">@color/white</item> 
    <item name="android:actionMenuTextColor">@color/white</item> 
    <item name="android:homeAsUpIndicator">@drawable/ic_account</item> 
</style> 

これは、原色、プライマリ暗い、アクセント、windowbackground actionmenuテキストの色と最後homeAsUpIndicatorドロアブルを変更基本となるテーマの通常の例です。

<application 
    android:name="com.appstudio35.application.A35Application" 
    android:allowBackup="true" 
    android:icon="@drawable/app_icon" 
    android:label="@string/app_name" 
    android:roundIcon="@drawable/app_icon" 
    android:supportsRtl="true" 
    android:theme="@style/AppTheme"> 

あなたはまた、それが親のテーマを拡張するようにサブスタイルにテーマを移動することを選択したとする基本テーマからアップ引き出し可能を削除することがあります。そして、ちょうどこのようなあなたの活動やアプリに適用

<style name="AppTheme.CustomUp"> 
    <item name="android:homeAsUpIndicator">@drawable/ic_account</item> 
</style> 

とのみ、このような特定の活動に適用されます:すべての活動に影響を与えないよう

<activity 
     android:name="com.appstudio35.activities.MainActivity" 
     android:screenOrientation="portrait" 
     android:theme="@style/AppTheme.CustomUp"/> 
+0

返事をありがとう!このスタイルをSearchViewにどのように適用できますか? –

+0

スタイルはマニフェストを通じて適用されます。あなたは既にあなたのスタイルフォルダにデフォルトのAppThemeを持っています。上記のようなあなたのドロウアブルを指し示すアイテムを作るだけです。次に、AppThemeのアクティビティやアプリケーションにスタイルを割り当てるだけで、それが機能します。 AppThemeをアプリケーションに割り当てることによって、アクティビティを伝播します。次にアンドロイド:defaultStuffをオーバーライドすることでアンドロイドコントロールのスタイルを制御します。理にかなっている?あなたはスタイリングで多くをすることができます。 – Sam

+0

こんにちは、現在、searchViewアイコンをクリックすると、searchViewが開き、listViewが表示されます。 「searchView」の「戻る」矢印ボタンをクリックすると、searchViewは閉じられますが、listViewは開いたままになります。searchViewの「戻る」ボタンを押すと、searchViewを閉じるときにlistViewを閉じることができますか? – iBEK

関連する問題