4

私はActionBarSherlockに基づいた独自のテーマを持っています、これTheme.Sherlock.Light.DarkActionBarが私のスタイルです:

<style name="Theme.MyTheme" parent="Theme.Sherlock.Light.DarkActionBar">
    <item name="actionBarStyle">@style/Widget.MyTheme.ActionBar</item>
</style>

<style name="Widget.MyTheme.ActionBar" parent="Widget.Sherlock.Light.ActionBar.Solid.Inverse">
    <item name="android:background">@drawable/action_bar</item>
    <item name="background">@drawable/action_bar</item>
</style>

@drawable/action_barxmlはどこにありますか:

<layer-list xmlns:android="http://schemas.android.com/apk/res/android" >
    <item>
        <shape android:shape="rectangle">
            <solid android:color="@color/color_action_bar_bottom_line" />
        </shape>
    </item>

    <item android:bottom="2dp">
        <shape android:shape="rectangle">
            <solid android:color="@color/color_action_bar_background" />
        </shape>
    </item>
</layer-list>

SearchViewのテキスト(ActionBarで検索モードを使用する場合)が「darkon dark」であるため、何も表示されないという点を除いて、すべてが見栄えがします。SearchViewのテキストの色を手動で設定しようとしました。

AutoCompleteTextView searchTextView =
        (AutoCompleteTextView) searchView.findViewById(R.id.abs__search_src_text);
searchTextView.setTextColor(Color.WHITE);
searchTextView.setHintTextColor(Color.LTGRAY);
searchTextView.setHighlightColor(Color.WHITE);
searchTextView.setLinkTextColor(Color.WHITE);

これは大いに役立ちましたが、オートコンプリートテキストの色を変更することはできません。

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

ご覧のとおり、まだ黒です。この種のテキストの白いテキストの色を設定するにはどうすればよいですか?

4

6 に答える 6

3

このコードを試してください

SearchView searchView = new SearchView(context);
LinearLayout linearLayout1 = (LinearLayout) searchView.getChildAt(0);
LinearLayout linearLayout2 = (LinearLayout) linearLayout1.getChildAt(2);
LinearLayout linearLayout3 = (LinearLayout) linearLayout2.getChildAt(1);
AutoCompleteTextView autoComplete = (AutoCompleteTextView) linearLayout3.getChildAt(0);
autoComplete.setTextColor(Color.WHITE);

また

SearchView searchView = new SearchView(context);
AutoCompleteTextView search_text = (AutoCompleteTextView) searchView.findViewById(searchView.getContext().getResources().getIdentifier("android:id/search_src_text", null, null));
search_text.setTextColor(Color.WHITE);

ここで私自身の答えからですSearchViewTextSizeを設定する方法は?

于 2013-02-26T07:15:18.673 に答える
2

オートコンプリート機能を無効にすることでこれを解決しました(編集タイプをVisible Passwordに設定すると無効になります)が、この解決策はあまり良くなく、私はまだより良いものを探しています。

private SearchView getSearchView() {
    SearchManager searchManager = (SearchManager) getSystemService(Context.SEARCH_SERVICE);
    SearchView searchView = new SearchView(getSupportActionBar().getThemedContext());
    searchView.setQueryHint("Search for items");
    searchView.setSearchableInfo(searchManager.getSearchableInfo(getComponentName()));

    AutoCompleteTextView searchTextView =
            (AutoCompleteTextView) searchView.findViewById(R.id.abs__search_src_text);
    if (searchTextView != null) {
        searchTextView.setInputType(InputType.TYPE_CLASS_TEXT
                                    | InputType.TYPE_TEXT_VARIATION_VISIBLE_PASSWORD);
        searchTextView.setTypeface(Typeface.DEFAULT);
    }
    return searchView;
}
于 2013-02-27T09:48:14.823 に答える
1

カスタムのダークアクションバーテーマでライトテーマを使用していると思います。のテーマをAutoCompleteTextView暗いものに変更してみることができます。これをテーマに追加してみてください:

<style name="Widget.MyTheme.ActionBar" parent="Widget.Sherlock.Light.ActionBar.Solid.Inverse">
    <item name="searchAutoCompleteTextView">@style/Widget.Sherlock.SearchAutoCompleteTextView</item>
    <item name="android:searchAutoCompleteTextView">@style/Widget.Sherlock.SearchAutoCompleteTextView</item>

    <item name="searchAutoCompleteTextViewStyle">@style/Widget.Sherlock.SearchAutoCompleteTextView</item>
    <item name="android:searchAutoCompleteTextViewStyle">@style/Widget.Sherlock.SearchAutoCompleteTextView</item>

    <item name="textAppearanceLargePopupMenu">@style/Widget.Sherlock.SearchAutoCompleteTextView</item>
    <item name="android:textAppearanceLargePopupMenu">@style/Widget.Sherlock.SearchAutoCompleteTextView</item>

    <item name="textAppearanceSmallPopupMenu">@style/Widget.Sherlock.SearchAutoCompleteTextView</item>
    <item name="android:textAppearanceSmallPopupMenu">@style/Widget.Sherlock.SearchAutoCompleteTextView</item>
</style>

編集:追加された行についてはわかりませんが、試すことができます。HoloEverywhereライブラリのいくつかの修正でそれを見つけました。

于 2013-02-21T20:29:02.440 に答える
1

これを行うための最良の方法があるかもしれませんが、非常に単純な方法を使用しました、私はそのためにライブラリを使用しました

 @Override
    public boolean onCreateOptionsMenu(Menu menu) {
        searchMenuItem = CollapsibleMenuUtils.addSearchMenuItem(menu, false,
                textWatcher);
        return true;
    }

ライト/ダークテーマを設定するには、ブール値をtrue/falseに設定します

addSearchMenuItem(メニューメニュー、ブールisLightTheme、TextWatcher textWatcher)

メニューに折りたたみ可能な検索メニュー項目を追加します。

パラメータ:menu isLightTheme-ActionBarにライトを使用する場合はtrue、それ以外の場合はfalse textWatcher

テキストの色を変更するために、ライブラリのレイアウト/holodark.xmlを変更しました

<AutoCompleteTextView
        android:id="@+id/search_src_text"
        android:layout_width="0dp"
       .
       .
        android:textColor="@android:color/white" />
于 2013-02-28T10:57:01.937 に答える
1

ここで、このようにSearchViewを使用しているiamは、白い色でも検索テキストの色をうまく機能させています。

これres/menuと名前はapplications_menu.xml

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

<item
    android:id="@+id/Accounts"
    android:icon="@drawable/ic_launcher">
</item>
<item
    android:id="@+id/menu_search"
    android:actionViewClass="android.widget.SearchView"
    android:icon="@drawable/ic_launcher"
    android:showAsAction="ifRoom"
    android:title="menu_search">
</item>
</menu>

これは、このように検索するときにアクティビティで使用します

new MenuInflater(this).inflate(R.menu.applications_menu, menu);     
    SearchManager searchManager = (SearchManager) getSystemService(Context.SEARCH_SERVICE);
    SearchView searchView = (SearchView) menu.findItem(R.id.menu_search).getActionView();
    searchView.setSearchableInfo(searchManager.getSearchableInfo(getComponentName()));           
    searchView.setIconifiedByDefault(false);

これが画面です

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

于 2013-03-04T06:11:47.290 に答える
1

問題は、設定されているスタイル(この場合はライト上のダークアクションバー)をSearchView適切に考慮せずにが初期化されることです。ActionBarそして答えはActionBarテーマを使用することContextです; によって取得されActivity.getActionBar().getThemedContext()ます。これは、 ABS移行の下部に記載されています。

リストナビゲーションを使用している場合は、デモサンプルの「リストナビゲーション」の例に特に注意して、適切な使用方法を確認してください。アイテムビューとドロップダウンビューの両方にライブラリが提供するレイアウトを使用する必要があります。また、アクションバーのテーマコンテキストを使用する必要があります。

私のコードは、標準のAndroidでどのように行われるかですが、ActionBar適切なものを入手する必要があります。テーマContextをに渡すSearchViewと、適切なスタイルが使用されます。つまり、明るい背景にあるかのようにレンダリングされません。

于 2014-02-27T02:58:15.220 に答える