8

ActionBarのメニューレイアウトは次のとおりです。

<?xml version="1.0" encoding="utf-8"?>
<menu xmlns:android="http://schemas.android.com/apk/res/android" >
    <item 
        android:id="@+id/itemSearch"
        android:icon="@drawable/actionbar_icon_search"
        android:showAsAction="ifRoom|collapseActionView"
        android:actionViewClass="android.widget.SearchView" 
        android:title="Search"/>
</menu>

そして、これがセットアップコードです:

@Override
public void onCreateOptionsMenu(Menu menu, MenuInflater inflater) {
    inflater.inflate(R.menu.actionbar_default, menu);

    SearchView searchView=(SearchView) menu.findItem(R.id.itemSearch).getActionView();
    int searchPlateId = searchView.getContext().getResources().getIdentifier("android:id/search_src_text", null, null);
    View searchEditText = searchView.findViewById(searchPlateId); 
    ((TextView) searchEditText).setTextColor(Color.WHITE);
    searchView.setOnCloseListener(new OnCloseListener() {...});
    searchView.setOnQueryTextListener(new OnQueryTextListener() {...});
}

1つを除いて、すべて問題ありません。Asusタブレット(TF-201、Android 3.2.1)では、グラフィックがぼやけています。

ここに画像の説明を入力してください

削除するandroid:actionViewClass="android.widget.SearchView"と、すべてが正常に見えます。

ここに画像の説明を入力してください

この問題は、4.1.2エミュレータでは再現されません。メニューのインフレコードだけを残してみましたonCreateOptionsMenu()が、うまくいきませんでした。

これを修正するにはどうすればよいですか?

4

2 に答える 2

4

だから私はソリューションを打ち負かしましたが、ActionBarSherlock ライブラリを使用しない場合、API 14 以降に対してのみ適切な互換性を宣言します。


最初のソリューション (API 14+)

重要なのは、アプリケーションのテーマ コンテキストに接続することです。そうしないと、SearchView のデザインが可能な限り低くなります (ぼやけたアイコン)

プログラムによる SearchView の作成

断片

SearchView searchView =
                new SearchView(getActivity().getActionBar().getThemedContext());

アクティビティ

SearchView searchView = new SearchView(getActionBar().getThemedContext());

2 番目の解決策 (ABS 互換性、API 8+)

アクションバーシャーロックフラグメント

SearchView searchView = 
  new SearchView(getSherlockActivity().getSupportActionBar().getThemedContext());

アクションバー シャーロック アクティビティ

SearchView searchView = new SearchView(getSupportActionBar().getThemedContext());

3 番目のソリューション (API 11 以降)

場合によっては、設定SearchView.setBackgroundColor(int color)によってアイコンのぼやけが少なくなります。Color.WITEまたはColor.BLACKを試してください。

これは、折りたたまれているかどうかにかかわらず、MenuItem の背景色を変更することに注意してください。テーマ Holo.Light.DarkActionBar を使用すると、ActionBar スタイルに従って適切な色を使用する必要があります。

于 2013-06-21T08:24:11.353 に答える
2

同じ問題が発生しましたが、他の回答では問題が解決しませんでした。からアクティビティ クラスを拡張していAppCompatActivityます。Android 4.* では searchview アイコンがぼやけて見えましたが、Android 5.* では問題なく表示されていました。

xml を次のように変更しました。

  <item android:id="@+id/action_search"
      android:icon="@drawable/ic_search_white_24dp"
      app:showAsAction="always"
      app:actionViewClass="android.support.v7.widget.SearchView"
      android:iconifiedByDefault="true" />

そして輸入

import android.support.v7.widget.SearchView;

それ以外のimport android.widget.SearchView;

そして問題は修正されました。

于 2015-12-19T15:03:17.020 に答える