it-swarm.dev

تغيير شريط الإجراءات searchview تلميح لون النص

كيف يمكنني تغيير لون نص العرض في شريط الإجراءات؟

يشرح هذا السؤال كيفية الحصول على EditText عند استخدام ABS: Android ActionBar Customize Search View

هل هناك Android.R.id يمكنني استخدامه للحصول على مرجع إلى EditText حتى أتمكن من تغيير لون التلميح؟ أم أن هناك طريقة أخرى لتغيير اللون؟

Action bar search view hint text

48
Juhani

Android: actionBar Widget Theme يجب أن يشير موضوع السمة الرئيسية إلى نمط يحتوي على Android: textColorHint فيه. هذا سيسمح بتغيير لون النص تلميح لعرض البحث.

53
Kirill
searchView.setQueryHint(Html.fromHtml("<font color = #ffffff>" + getResources().getString(R.string.hintSearchMess) + "</font>"));
53
Vadim Teselkin
SearchView searchView= (SearchView) findViewById(R.id.searchView1);
int id = searchView.getContext()
                   .getResources()
                   .getIdentifier("Android:id/search_src_text", null, null);
TextView textView = (TextView) searchView.findViewById(id);
textView.setTextColor(Color.WHITE);
22
Amr Angry

هذا عملت بالنسبة لي ، آمل أن يساعد

((EditText) searchView.findViewById(Android.support.v7.appcompat.R.id.search_src_text)).setHintTextColor(getResources().getColor(R.color.white));

انظر أيضا هذا

16
Syed Raza Mehdi

لقد قمت بحلها بإضافة هذه الخاصية إلى الموضوع الرئيسي:

<style name="AppTheme" parent="AppBaseTheme">
    .....
    .....
    <item name="Android:actionBarWidgetTheme">@style/MyActionBarWidgetTheme</item> 
</style>

ثم أضف الخاصية التي أريد تغييرها في هذه الحالة لون التلميح.

<style name="MyActionBarWidgetTheme" parent="@Android:style/Theme.Holo">
    .....
    .....
    <item name="Android:textColorHint">@color/blanco_60</item>
</style>

آمل أن يساعد: د

11
Kokusho

إليك بالتحديد كيفية تطبيق النمط على النحو الموضح أعلاه. الإجابة الصحيحة هي تحميل نمط عنصر واجهة مستخدم شريط الإجراءات بنمط مخصص خاص بك. لمصباح هولو مع شريط الحركة المعتمة ، ضع هذا في ملف الأنماط الخاصة بك مثل res/values/styles_mytheme.xml:

<style name="Theme.MyTheme" parent="@Android:style/Theme.Holo.Light.DarkActionBar">
    <item name="Android:actionBarWidgetTheme">@style/Theme.MyTheme.Widget</item>
    <!-- your other custom styles -->
</style>

<style name="Theme.MyTheme.Widget" parent="@Android:style/Theme.Holo">
    <item name="Android:textColorHint">@Android:color/white</item>
    <!-- your other custom widget styles -->
</style>

تأكد من أن التطبيق الخاص بك يستخدم السمة المخصصة للسمة كما هو موضح في أدخل وصف الرابط هنا

7
johnarleyburns

يمتد كائن SearchView من LinearLayout ، لذلك يحتفظ بطرق عرض أخرى. الحيلة هي العثور على طريقة العرض التي تحتوي على النص تلميح وتغيير اللون برمجياً. من خلال اجتياز التسلسل الهرمي للعرض ، يمكنك العثور على عنصر واجهة المستخدم الذي يحتوي على نص التلميح:

// get your SearchView with its id
SearchView searchView = (SearchView) menu.findItem(R.id.search).getActionView();
// traverse the view to the widget containing the hint text
LinearLayout ll = (LinearLayout)searchView.getChildAt(0);
LinearLayout ll2 = (LinearLayout)ll.getChildAt(2);
LinearLayout ll3 = (LinearLayout)ll2.getChildAt(1);
SearchView.SearchAutoComplete autoComplete = (SearchView.SearchAutoComplete)ll3.getChildAt(0);
// set the hint text color
autoComplete.setHintTextColor(getResources().getColor(Color.WHITE));

هذه الطريقة تعمل مع أي موضوع. يمكنك أيضًا تغيير شكل عناصر واجهة المستخدم الأخرى في التسلسل الهرمي SearchView ، مثل EditText الذي يحتفظ باستعلام البحث.

7
jfcartier

فقط احصل على textView معرف عنصر واجهة البحث واستخدم setTextColor() طريقة لتغيير لون نص البحث و setHintTextColor() لتغيير لون النص تلميحات البحث.

// Get textview id of search widget
int id =  searchView.getContext().getResources().getIdentifier("Android:id/search_src_text", null, null);
TextView textView = (TextView) searchView.findViewById(id);

// Set search text color
textView.setTextColor(Color.WHITE);

// Set search hints color
textView.setHintTextColor(Color.GRAY);
5
Ferdous Ahamed

إذا كنت تريد تغيير زر السهم الأيسر في عرض البحث ، فأضف التطبيق: collapseIcon.

<Android.support.v7.widget.Toolbar
        Android:id="@+id/toolbar"
        Android:layout_width="match_parent"
        Android:layout_height="?attr/actionBarSize"
        Android:background="@color/colorPrimary"
        app:collapseIcon="@drawable/ic_search_view_home"
        />

إذا كنت ترغب في تغيير لون النص ولون تلميح النص ، أضف ما يلي.

EditText searchEditText = searchView.findViewById(Android.support.v7.appcompat.R.id.search_src_text);
    searchEditText.setTextColor(Color.WHITE);
    searchEditText.setHintTextColor(Color.WHITE);

إذا كنت تريد تغيير رمز الإغلاق ، أضف ما يلي.

ImageView imvClose = searchView.findViewById(Android.support.v7.appcompat.R.id
            .search_close_btn);
    imvClose.setImageResource(R.drawable.ic_search_view_close);
5
Zin Myo Oo

باستخدام أحدث مكتبة appcompat (أو إذا كنت تستهدف الإصدار 5.0 أو أحدث) ، يمكنك القيام بذلك فقط في XML باستخدام ThemeOverlay:

<style name="ThemeOverlay.MyApp.ActionBar" parent="ThemeOverlay.AppCompat.ActionBar">
    <item name="autoCompleteTextViewStyle">@style/Widget.MyApp.AutoCompleteTextView.SearchView</item>
</style>

<style name="Widget.MyApp.AutoCompleteTextView.SearchView" parent="Widget.AppCompat.AutoCompleteTextView">
    <item name="Android:textColor">#000</item>
    <item name="Android:textColorHint">#5000</item>
</style>

ثم في ملف التصميم الخاص بك:

<Android.support.v7.widget.Toolbar
    app:theme="@style/ThemeOverlay.MyApp.ActionBar"
    ... />

إذا كنت تريد أيضًا تطبيقه على الأنشطة التي تستخدم ActionBar بدلاً من Toolbar ، يمكنك إضافة هذا إلى السمة Activity:

<style name="Theme.MyApp" parent="Theme.AppCompat">
    <item name="actionBarTheme">@style/ThemeOverlay.MyApp.ActionBar</item>
    ...
</style>
3
Jarett Millard

انظر إلى هذه الفئة ، يمكن أن تساعدك في حل مشكلتك

import Android.R.color;
import Android.content.Context;
import Android.graphics.Typeface;
import Android.widget.ImageView;

import com.actionbarsherlock.widget.SearchView;
import com.actionbarsherlock.widget.SearchView.SearchAutoComplete;

public class MySearchView {

    public static SearchView getSearchView(Context context, String strHint) {
        SearchView searchView = new SearchView(context);
        searchView.setQueryHint(strHint);
        searchView.setFocusable(true);
        searchView.setFocusableInTouchMode(true);
        searchView.requestFocus();
        searchView.requestFocusFromTouch();

        ImageView searchBtn = (ImageView) searchView.findViewById(R.id.abs__search_button);
        searchBtn.setImageResource(R.drawable.ic_menu_search);

        // ImageView searchBtnClose = (ImageView) searchView.findViewById(R.id.abs__search_close_btn);
        // searchBtnClose.setImageResource(R.drawable.ic_cancel_search_bar);


        SearchAutoComplete searchText = (SearchAutoComplete) searchView.findViewById(R.id.abs__search_src_text);
        setFont(context, searchText);
        searchText.setTextColor(context.getResources().getColor(color.white));
        searchText.setHintTextColor(context.getResources().getColor(color.white));

        return searchView;
    }

    private static void setFont(Context _context, SearchAutoComplete searchText) {
        Typeface tf = null;
        Typeface currentType = searchText.getTypeface();
        if (currentType == null) {
            tf = MyApplication.fontNormal;
        }
        else {
            int currentStyle = currentType.getStyle();
            if (currentStyle == Typeface.BOLD) {
                tf = MyApplication.fontBold;
            }
            else if (currentStyle == Typeface.BOLD_ITALIC) {
                tf = MyApplication.fontBoldItalic;
            }
            else if (currentStyle == Typeface.ITALIC) {
                tf = MyApplication.fontItalic;
            }
            else {
                tf = MyApplication.fontNormal;
            }
        }
        searchText.setTypeface(tf);
    }

    public static SearchView getSearchView(Context context, int strHintRes) {
        return getSearchView(context, context.getString(strHintRes));
    }
}
3
sonida

جرب هذا الكود فمن السهل جدا.

    // Associate searchable configuration with the SearchView
        SearchManager searchManager =
                (SearchManager) getSystemService(Context.SEARCH_SERVICE);
        SearchView searchView =
                (SearchView) menu.findItem(R.id.search).getActionView();
        EditText searchEditText = (EditText) searchView.findViewById(Android.support.v7.appcompat.R.id.search_src_text);
           searchEditText.setHint("Search");
        searchEditText.setHintTextColor(getResources().getColor(R.color.white));
        searchView.setSearchableInfo(searchManager.getSearchableInfo(getComponentName()));

. searchEditText.setHintTextColor (getResources () getColor (R.color.white))؛

2
Jignesh Goyani

الحل لتغيير لون نص تلميح البحث هو:

 SearchView.SearchAutoComplete searchAutoComplete = (SearchView.SearchAutoComplete)searchView.findViewById(Android.support.v7.appcompat.R.id.search_src_text);
 searchAutoComplete.setHintTextColor(Color.GRAY);
2
Manvendra Priyadarshi

باستخدام هذا ، يمكنك تغيير XML القابل للبحث

  1. لون النص تلميح البحث
  2. نص البحث
  3. بحث أيقونة قريبة
  4. بحث تلميح الرمز
  5. لوحة البحث
int searchHintBtnId = searchView.getContext().getResources()
                    .getIdentifier("Android:id/search_mag_icon", null, null);
     int hintTextId = searchView.getContext()
                    .getResources()
                    .getIdentifier("Android:id/search_src_text", null, null);
            int closeBtnId = searchView.getContext()
                    .getResources()
                    .getIdentifier("Android:id/search_close_btn", null, null);
            // Set the search plate color to white
            int searchPlateId = getResources().getIdentifier("Android:id/search_plate", null, null);

            View view = searchView.findViewById(searchPlateId);
            view.setBackgroundResource(R.drawable.search_plate);

            ImageView closeIcon = (ImageView) searchView.findViewById(closeBtnId);
            closeIcon.setImageResource(R.drawable.close);

            ImageView searchHintIcon = (ImageView) searchView.findViewById(searchHintBtnId);
            searchHintIcon.setImageResource(R.drawable.search);

            TextView textView = (TextView) searchView.findViewById(hintTextId);
            textView.setTextColor(getResources().getColor(R.color.search_text_color));
            textView.setHintTextColor(getResources().getColor(R.color.search_hint_text_color));

هنا هو drawable/search_plate.xml

<!-- main color -->
<item Android:bottom="1dp"
    Android:left="1dp"
    Android:right="1dp">
    <shape >
        <solid Android:color="@color/app_theme_color" />
    </shape>
</item>

<!-- draw another block to cut-off the left and right bars -->
<item Android:bottom="10.0dp">
    <shape >
        <solid Android:color="@color/app_theme_color" />
    </shape>
</item> </layer-list>
2
Deepak Gupta

هذا أمر بسيط حقًا تحقيقه باستخدام styles.xml فقط افهم أن تصميم SearchView مرتبط مباشرةً بسمة شريط الأدوات الذي تم إحضاره من menu.xml كـ app:actionViewClass.

  1. إنشاء نمط لشريط الأدوات.
  2. قم بتطبيق هذا النمط كموضوع على شريط الأدوات ويقوم بتغيير طرق العرض ذات الصلة وخصائصها.
0
sud007

كما يمكنك ضبط SearchView في قائمة الطعام الخاصة بك يدويًا وبالتالي التحكم الكامل في العرض.

0
Moritz
int id = searchView.getContext().getResources().getIdentifier("Android:id/search_src_text", null, null);
TextView textView = (TextView) searchView.findViewById(id);
textView.setTextColor(Color.WHITE);
textView.setHintTextColor(Color.WHITE);
0
Andrey Degtiarev