কোনও অ্যান্ড্রয়েড অনুসন্ধানভিউতে পাঠ্য রঙটি পরিবর্তন করা সম্ভব?


115

সন্ধানভিউ উপাদানটিতে পাঠ্যের রঙ পরিবর্তনের জন্য কোনও বৈশিষ্ট্য নেই। ডিফল্ট পাঠ্যের রঙ কালো এবং আমাদের অন্ধকার পটভূমিতে কাজ করে না। হ্যাক্স অবলম্বন না করে পাঠ্যের রঙ পরিবর্তন করার কোনও উপায় আছে কি?

আমি টেক্সটের আকার পরিবর্তন করার সাথে সম্পর্কিত এই জাতীয় প্রশ্নটি পেয়েছি, তবে এখনও পর্যন্ত এর কোনও উত্তর নেই: অনুসন্ধানভিউ টেক্সটসাইজ কীভাবে সেট করবেন?


1
আমি এই জন্য একটি উত্তর চাই।
দি লেলেটসমাস্টার

আপনি কি চেষ্টা করেছেন দয়া করে উল্লেখ করুন।
সাহিল মহাজন এমজে

উত্তর:


121

যোগ

<item name="android:editTextColor">@android:color/white</item>

মূল থিম এবং এটি প্রবেশ করা পাঠ্য পরিবর্তন করা উচিত। আপনি ব্যবহার করতে পারেন

<item name="android:textColorHint">@android:color/white</item>

অনুসন্ধান ভিউয়ের জন্য ইঙ্গিত পাঠ্য পরিবর্তন করতে। (নোট করুন আপনি @android:color/whiteযে উপযুক্ত মানটি ব্যবহার করবেন বলে আশা করছেন তার সাথে প্রতিস্থাপন করতে পারেন)


1
এটি আমার জন্য এটি স্থির করেছে এবং প্রতিবিম্ব ব্যবহার করে কোনও জটিল শেননিগান জড়িত ছিল না। এছাড়াও অ্যাপকম্প্যাট নিয়ে কাজ করে।
dj_bushido

আপনি অ্যান্ড্রয়েড: থিমটি এমন একটি শৈলীতে অনুসন্ধানের ভিউতে থিম সেট করতে পারেন যা অ্যান্ড্রয়েড: editTextColor উপাদান রয়েছে। এইভাবে আপনি কেবল সেই অনুসন্ধানের দৃশ্যকেই প্রভাবিত করুন।
পেপিজন

2
এটি কাজ করে! আমি একটি সরঞ্জামদণ্ডের ভিতরে একটি অনুসন্ধান ভিউ ব্যবহার করছিলাম, থিমওভারলে.অ্যাপকম্প্যাট.লাইট প্রসারিত করেছি এবং উপরের আইটেমটি যুক্ত করেছি এবং সরঞ্জামদণ্ড উইজেটে স্টাইলটি সেট করেছি;) কবজির মতো কাজ করে ...
কোডেনাম_47

এই সমাধানটি আমার পক্ষে কাজ করে না। পাঠ্যের এখনও ভুল রঙ রয়েছে। ইঙ্গিত রঙ সেট করার সাথে নীচের উত্তরটি আমার জন্য প্রোগ্রাম্যিকভাবে কাজ করে।
ডোমিনিক

4
এই উত্তরটির সাথে সমস্যাটি হ'ল এটি আপনার EditTextএস এর পাঠ্যের রঙও পরিবর্তন করবে । আমার জন্য একমাত্র সমাধান যা কেবলমাত্র SearchViewটেক্সটের রঙকেই বদলেছে
নিষিদ্ধ-জিওঞ্জিনিয়ারিং

95

এর মতো কিছু চেষ্টা করুন: আপনি এসডেকে থেকে পাঠ্যদর্শনটির জন্য একটি হ্যান্ডেল পাবেন এবং তারপরে এটিকে পরিবর্তন করবেন কারণ তারা প্রকাশ্যে প্রকাশ করেন না।

int id = searchView.getContext().getResources().getIdentifier("android:id/search_src_text", null, null);
TextView textView = (TextView) searchView.findViewById(id);
textView.setTextColor(Color.WHITE);

আমি মার্জিত সমাধানগুলি পছন্দ করি
মোহসেন আফশিন


মনে রাখবেন যে আপনি যদি অ্যাকশনবারারলক ব্যবহার করছেন তবে ভিউ আইডিগুলি আলাদা হবে। উদাহরণস্বরূপ, lib বর্তমানে সম্পাদনা পাঠ্য আইডিটিকে "প্যাকেজ: id / abs__search_src_text" এ সেট করে, যা সরাসরি R.id.abs__search_src_text এর মাধ্যমে অ্যাক্সেস করা যায়।
গ্রেগ 7gkb

3
এছাড়াও, আমি আসলে যা পরিবর্তন করতে চেয়েছিলাম তা হ'ল অনুসন্ধান ভিভ ইঙ্গিত পাঠ্য রঙ, যা টেক্সটভিউ.সেটহিন্টটেক্সট कलোর () এর মাধ্যমে সহজেই সম্পন্ন হয়।
greg7gkb

3
এটি একটি খুব নোংরা হ্যাক। অ্যান্ড্রয়েড ব্যবহার করুন: সম্পাদনাটেক্সট কালার এবং অ্যান্ড্রয়েড: টেক্সট কালার হিন্ট পরিবর্তে আকডটকমের পরামর্শ দেওয়া হয়েছে
ফিলিপ হফম্যান

69

এটি আমার পক্ষে কাজ করে।

SearchView searchView = (SearchView) findViewById(R.id.search);
EditText searchEditText = (EditText) searchView.findViewById(android.support.v7.appcompat.R.id.search_src_text);
searchEditText.setTextColor(getResources().getColor(R.color.white));
searchEditText.setHintTextColor(getResources().getColor(R.color.white));

1
আপনি যদি টেক্সটভিউ বা এমনকি একটি স্বতঃসম্পূর্ণ টেক্সটভিউ হিসাবে ভিউটি পান তবে এটিও কাজ করে।
জুয়ান জোসে মেলেরো গমেজ

হ্যাঁ, @ জুয়ান জোসেমেলেরোজিমেজের পরামর্শ অনুসরণ করার পরে এটি আমার পক্ষে কাজ
পার্থ প্যাটেল

আমি অনুমান, এই অনুলিপি এবং আমার উত্তর এখান থেকে সংক্ষিপ্ত ছিল: stackoverflow.com/a/26251197/2914140
শীতলমাইন্ড

24

আমি অনুরূপ কিছু করতে চেয়েছিলেন। অবশেষে আমাকে বাচ্চাদের TextViewমধ্যে খুঁজে পেতে হয়েছিল SearchView:

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

আপনি যদি ব্যবহারের পদ্ধতিটি চান:

public static <V extends View> Collection<V> findChildrenByClass(ViewGroup viewGroup, Class<V> clazz) {

    return gatherChildrenByClass(viewGroup, clazz, new ArrayList<V>());
}

private static <V extends View> Collection<V> gatherChildrenByClass(ViewGroup viewGroup, Class<V> clazz, Collection<V> childrenFound) {

    for (int i = 0; i < viewGroup.getChildCount(); i++)
    {
        final View child = viewGroup.getChildAt(i);
        if (clazz.isAssignableFrom(child.getClass())) {
            childrenFound.add((V)child);
        }
        if (child instanceof ViewGroup) {
            gatherChildrenByClass((ViewGroup) child, clazz, childrenFound);
        }
    }

    return childrenFound;
}

3
আমিও পূর্ববর্তী সমাধানগুলি দিয়ে নাল ব্যতিক্রম পেয়েছিলাম, এবং এটি আমার পক্ষে কাজ করেছে!
দিয়েগো পনসিয়ানো

1
এটি গ্রহণযোগ্য উত্তর হিসাবে চিহ্নিত করা উচিত। উপরেরটি নাল দেয়। ভাল কাজের বন্ধুটির জন্য ধন্যবাদ :)
ব্লুওয়্যার

3
এই সমাধানটি এত ঘৃণ্য তবে এর একমাত্র এটি যা আসলে কাজ করে এবং এটি দোষ দেওয়ার জন্য অ্যান্ড্রয়েড দল!
ওফেক রন

আমরা কীভাবে এটির সাহায্যে অনুসন্ধান আইকনটি অ্যাক্সেস করব?
ইয়াসিন ইয়াকুবি

17

@ সিজারম্যাটকে ধন্যবাদ আমি অ্যান্ড্রয়েডএক্স সমর্থন যুক্ত করেছি

আমার জন্য নিম্নলিখিত কাজগুলি। আমি একটি লিঙ্ক থেকে একটি কোড ব্যবহার করেছি: সহায়তা লাইব্রেরি ব্যবহার করে অ্যাকশনবারে অনুসন্ধানের ইঙ্গিতটির পাঠ্যের রঙ পরিবর্তন করুন

    searchView = (SearchView) menu.findItem(R.id.action_search).getActionView();

    EditText txtSearch = ((EditText)searchView.findViewById(androidx.appcompat.R.id.search_src_text));
    txtSearch.setHint(getResources().getString(R.string.search_hint));
    txtSearch.setHintTextColor(Color.LTGRAY);
    txtSearch.setTextColor(Color.WHITE);

ক্রিয়াকলাপ অনুসন্ধান অনুসন্ধান ইঙ্গিত পাঠ্য রঙ পরিবর্তন করা অন্য সমাধানের পরামর্শ দেয়। এটি কাজ করে তবে কেবল ইঙ্গিত পাঠ্য এবং রঙ সেট করে।

    searchView.setQueryHint(Html.fromHtml("<font color = #ffffff>" + getResources().getString(R.string.search_hint) + "</font>"));

1
androidx.appcompat.R.id.search_src_textআপনি যদি আপনার প্রকল্পটি অ্যান্ড্রয়েডএক্সে স্থানান্তরিত করেন তবে ব্যবহার করুন ।
জারম্যাট

16

এটি কাস্টম শৈলীর মাধ্যমে সর্বোত্তমভাবে অর্জিত হয়। আপনার নিজস্ব কাস্টম শৈলীর সাথে অ্যাকশন বার উইজেট স্টাইলটি ওভারলোড করুন। গা dark় অ্যাকশন বারের সাথে হলো আলোর জন্য এটি আপনার নিজের স্টাইলের ফাইলে রাখুন যেমন 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>

আপনার অ্যাপ্লিকেশনটি এখানে লিঙ্ক বিবরণ প্রবেশের বর্ণনায় বর্ণিত থিম কাস্টম থিম ব্যবহার করছে তা নিশ্চিত করুন


14

আপনি editTextColorশৈলীতে বৈশিষ্ট্যটি সেট করে এটি করতে পারেন ।

<style name="SearchViewStyle" parent="Some.Relevant.Parent">
    <item name="android:editTextColor">@color/some_color</item>
</style>

এবং আপনি এই স্টাইলটি Toolbarবা SearchViewলেআউটে প্রয়োগ করেন।

<android.support.v7.widget.Toolbar
    android:theme="@style/SearchViewStyle">

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

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

+1 এটি FindViewById imho জড়িত সমস্ত সমাধান ট্রাম্প করে। সম্ভাব্য স্টাইলিং যখনই সম্ভব ব্যবহার করা উচিত।
ম্যাটিয়াস

এটি গ্রহণযোগ্য উত্তর হওয়া উচিত! খুব পরিষ্কার এবং সহজ।
এমএসইজ 5

8

যদি আপনি ব্যবহার করেন - android.support.v7.widget.SearchView

SearchView searchView = (SearchView) item.getActionView();
EditText editText = (EditText) searchView.findViewById(android.support.v7.appcompat.R.id.search_src_text);
editText.setTextColor(Color.WHITE);

কোটলিনে

val searchView = SearchView(this)
val editText = searchView.findViewById<EditText>(androidx.appcompat.R.id.search_src_text)
editText.setTextColor(Color.WHITE)

বরং আপনার এখনই অ্যান্ড্রয়েডেক্স সমর্থন লাইব্রেরি ব্যবহার শুরু করা উচিত


7

আপনার জন্য একটি স্টাইল তৈরি করুন Toolbar

<style name="AppTheme.Toolbar" parent="ThemeOverlay.AppCompat.ActionBar">
    <item name="android:editTextColor">@color/some_color</item>
</style>

এবং এটি থিম হিসাবে সেট করুন Toolbar

<android.support.v7.widget.Toolbar
    android:theme="@style/AppTheme.Toolbar"
    ...

6

আপনি যদি android.support.v7.widget.SearchView ব্যবহার করছেন তবে প্রতিবিম্বটি ব্যবহার না করেই এটি সম্ভব।

আমি এখানে আমার অ্যাপ্লিকেশনটিতে এটি কীভাবে করছি:

EditText text = (EditText) searchView.findViewById(android.support.v7.appcompat.R.id.search_src_text);
ImageView searchCloseIcon = (ImageView) searchView.findViewById(android.support.v7.appcompat.R.id.search_close_btn);
View searchPlate = searchView.findViewById(android.support.v7.appcompat.R.id.search_plate);

if (searchPlate != null) {
    searchPlate.setBackgroundResource(R.drawable.search_background);
}

if (text != null){
    text.setTextColor(resources.getColor(R.color.white));
    text.setHintTextColor(getResources().getColor(R.color.white));

    SpannableStringBuilder magHint = new SpannableStringBuilder("  ");
    magHint.append(resources.getString(R.string.search));

    Drawable searchIcon = getResources().getDrawable(R.drawable.ic_action_view_search);
    int textSize = (int) (text.getTextSize() * 1.5);
    searchIcon.setBounds(0, 0, textSize, textSize);
    magHint.setSpan(new ImageSpan(searchIcon), 0, 1, Spannable.SPAN_EXCLUSIVE_EXCLUSIVE);

    // Set the new hint text
    text.setHint(magHint);

}

if (searchCloseIcon != null){
    searchCloseIcon.setImageDrawable(getResources().getDrawable(R.drawable.ic_action_close));
}

অ্যাপস কমপ্যাট সার্চ ভিউয়ের জন্য তারা এই আইডিগুলি প্রকাশ্যে প্রকাশ করে না, তবে আপনি কোথায় দেখবেন তা যদি তারা জানেন তবে তারা অ্যাপকম্প্যাটটির জন্য করেন। :)


এটি আসলে বিভিন্ন ডিভাইসে বেশ ভাল কাজ করে। সুন্দর.
শার্ক

5

আমার এই সমস্যা ছিল এবং এটি আমার পক্ষে কাজ করে।

@Override
public boolean onCreateOptionsMenu(Menu menu) {
        getMenuInflater().inflate(R.menu.customer_menu, menu);
        SearchManager searchManager = (SearchManager) getSystemService(Context.SEARCH_SERVICE);
        SearchView searchView       = (SearchView) menu.findItem(R.id.menu_customer_search).getActionView();
        searchView.setSearchableInfo(searchManager.getSearchableInfo(getComponentName()));

        searchView.setOnQueryTextListener(this);

        //Applies white color on searchview text
        int id = searchView.getContext().getResources().getIdentifier("android:id/search_src_text", null, null);
        TextView textView = (TextView) searchView.findViewById(id);
        textView.setTextColor(Color.WHITE);

        return true;
}

4
আমি সর্বদা শূন্য হই: (পাঠ্যদর্শন) অনুসন্ধান ভিউ.ফাইন্ডভিউবিআইআইডি (আইডি);
danielrvt-sgb

4

আপনি যদি আপনার অ্যাপ্লিকেশন থিমটি হলো থিমের উপর ভিত্তি করে থাকেন তবে আপনি অনুসন্ধান অনুসন্ধানে একটি কালো পাঠ্যের পরিবর্তে একটি সাদা পাবেন

<style name="Theme.MyTheme" parent="android:Theme.Holo">

নোংরা হ্যাক ব্যবহার না করে অনুসন্ধানের পাঠ্য রঙটি পরিবর্তন করার মতো অন্য কোনও উপায় আমি খুঁজে পেলাম না।


1
এটি কাজ করে না। আমি আশা করছিলাম যেহেতু এটি "ম্যাজিক" ভিউ আইডি ম্যানুয়ালি অনুসন্ধানের চেয়ে অনেক বেশি পরিষ্কার। আমি বেশ কয়েকটি থিম চেষ্টা করেছি, এমন একটি ক্রিয়াকলাপের সাথে যার লেআউটের গা dark় পটভূমি রয়েছে তবে অনুসন্ধান ভিউতে কালো পাঠ্য ব্যতীত অন্য কোনও কিছুই তৈরি করেনি।
ই-রিজ

4

সর্বাধিক পরিষ্কার উপায় হ'ল:

সরঞ্জামদণ্ড থিম ওভারলে.অ্যাপকম্প্যাট.ডार्ক.একশনবার ব্যবহার করে theme

এখন এটিকে শিশু হিসাবে তৈরি করুন:

সরঞ্জামদণ্ড স্টাইলের প্যারেন্ট "থিমওভারলে.অ্যাপকম্প্যাট.ডार्क.একশনবার"

শৈলীতে এই আইটেম যুক্ত করুন

আইটেমের নাম "অ্যান্ড্রয়েড: editTextColor"> আপনার রঙ

সম্পন্ন.

আরও একটি গুরুত্বপূর্ণ বিষয় হ'ল, সরঞ্জামদণ্ডে বিন্যাস_ উচ্চতা = "? অ্যাট্রি / অ্যাকশনবারসাইজ" রাখুন। ডিফল্টরূপে এটি মোড়ানো_ কনটেন্ট me আমার জন্য পাঠ্যটি অনুসন্ধান দৃষ্টিতে এমনকি দৃশ্যমান ছিল না এটি এটি সমস্যার সমাধান করে।


4

হ্যাঁ নিম্নলিখিত পদ্ধতি ব্যবহার করে এটি সম্ভব।

public static EditText setHintEditText(EditText argEditText, String argHintMessage, boolean argIsRequire) {
    try {
        if (argIsRequire) {
            argHintMessage = "   " + argHintMessage;
            //String text = "<font color=#8c8c8c>"+argHintMessage+"</font> <font color=#cc0029>*</font>";
            String text = "<font color=#8c8c8c>" + argHintMessage + "</font>";
            argEditText.setHint(Html.fromHtml(text));
        } else {
            argEditText.setHint(argHintMessage);
        }
    } catch (Exception e) {
        e.printStackTrace();
    }
    return argEditText;
}

এই পদ্ধতির কলিংয়ের মতো দেখতে ..

metLoginUserName=(EditText)this.findViewById(R.id.etLoginUserName);
    metLoginPassword=(EditText)this.findViewById(R.id.etLoginPassword);

    /**Set the hint in username and password edittext*/
    metLoginUserName=HotSpotStaticMethod.setHintEditText(metLoginUserName, getString(R.string.hint_username),true);
    metLoginPassword=HotSpotStaticMethod.setHintEditText(metLoginPassword, getString(R.string.hint_password),true);

এটি ব্যবহার করে আমি এই পদ্ধতিটি ব্যবহার করে ইঙ্গিততে সফলভাবে লাল রঙের * চিহ্ন যুক্ত করেছি। আপনার প্রয়োজন অনুসারে আপনার এই পদ্ধতিটি পরিবর্তন করা উচিত। আমি আশা করি এটি আপনার জন্য সহায়ক .... :)


এটা আমার কাছে কিছুটা জটিল।
gaols

1
স্ট্রিং টেক্সট = "<ফন্টের রঙ = # 8c8c8c>" + হিন্ট ম্যাসেজ + "</ font>"; argEditText.setHint (Html.fromHtml (পাঠ্য)); রঙের ইঙ্গিতটি সেট করার জন্য আপনি কেবল এই দুটি লাইন কোড ব্যবহার করতে পারেন
ডায়নামিকমাইন্ড

1
SearchAutoComplete autoCompleteView = (SearchAutoComplete) mSearchView .findViewById(com.android.internal.R.id.search_src_text);autoCompleteView.setHintTextColor(R.color.hint_text_color); এটি আমার সমাধান, তবে আমি মনে করি আপনারা আমার চেয়ে ভাল is আমি আপনার সমাধানটি ব্যবহার করব, ধন্যবাদ।
gaols

@ কেওলস কি আপনার সমাধান পেয়েছে ..?
ডায়নামিকমাইন্ড

@ গওলস, আপনার "com.android.intern.R.id.search_src_text" কোথায়?
wangqi060934

3

এটি ব্যবহার করুন, ঠিক আছে। : ডি

AutoCompleteTextView searchText = (AutoCompleteTextView) searchView.findViewById(R.id.abs__search_src_text);
searchText.setHintTextColor(getResources().getColor(color.black));
searchText.setTextColor(getResources().getColor(color.black));

3

হ্যাঁ আমরা পারি,

SearchView searchView = (SearchView) findViewById(R.id.sv_symbol);

সেরাচভিউ পাঠ্যের জন্য সাদা রঙ প্রয়োগ করতে,

int id = searchView.getContext().getResources().getIdentifier("android:id/search_src_text", null, null);
TextView textView = (TextView) searchView.findViewById(id);
textView.setTextColor(Color.WHITE);

শুভ কোডিং !!!!


3

এটা আমার জন্য কাজ করছে।

final SearchView searchView = (SearchView) MenuItemCompat.getActionView(item);

searchView.setOnQueryTextListener(this);   
searchEditText = (EditText) searchView.findViewById(android.support.v7.appcompat.R.id.search_src_text);
searchEditText.setTextColor(getResources().getColor(R.color.white));
searchEditText.setHintTextColor(getResources().getColor(R.color.white));

if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.JELLY_BEAN) 
{
    searchEditText.setBackgroundColor(getResources().getColor(R.color.c_trasnparent));
    searchEditText.setGravity(Gravity.CENTER);
    searchEditText.setCompoundDrawables(null,null,R.drawable.ic_cross,null);
}

3

টাইপ করা পাঠ্যের রঙ পরিবর্তন করুন:

((EditText)((SearchView)findViewById(R.id.searchView)).findViewById(((SearchView)findViewById(R.id.searchView)).getContext().getResources().getIdentifier("android:id/search_src_text", null, null))).setTextColor(Color.WHITE);

ইঙ্গিত পাঠ্যের রঙ পরিবর্তন করুন:

((EditText)((SearchView)findViewById(R.id.searchView)).findViewById(((SearchView)findViewById(R.id.searchView)).getContext().getResources().getIdentifier("android:id/search_src_text", null, null))).setHintTextColor(Color.LTGRAY);

2
TextView textView = (TextView) searchView.findViewById(R.id.search_src_text);
textView.setTextColor(Color.BLACK);

1

একটি SearchViewঅবজেক্ট থেকে প্রসারিত হয় LinearLayout, তাই এটি অন্যান্য মতামত ধারণ করে। কৌশলটি হ'ল ইঙ্গিত পাঠ্যটি ধারণ করা ভিউ সন্ধান এবং প্রোগ্রামিয়ালি রঙ পরিবর্তন করা। আইডি দ্বারা ভিউটি সন্ধান করার চেষ্টা করে সমস্যাটি হ'ল আইডিটি অ্যাপ্লিকেশনটিতে ব্যবহৃত থিম থেকে নির্ভরশীল। সুতরাং ব্যবহৃত থিমের উপর নির্ভর করে findViewById(int id)পদ্ধতিটি ফিরে আসতে পারে null। প্রতিটি থিমের সাথে কাজ করে এমন একটি আরও ভাল পন্থা হল ভিউ হায়ারার্কিটিকে অতিক্রম করে ইঙ্গিত পাঠ্যযুক্ত উইজেটটি সন্ধান করা:

// 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));
// set the text color
autoComplete.setTextColor(Color.BLUE);

এই পদ্ধতিটি ব্যবহার করে, আপনি SearchViewশ্রেণিবদ্ধের অন্যান্য উইজেটগুলির চেহারা পরিবর্তন করতে পারেন , যেমন EditTextঅনুসন্ধানের অনুসন্ধানটি রাখা। গুগল SearchViewখুব শীঘ্রই দর্শন শ্রেণিবিন্যাস পরিবর্তন করার সিদ্ধান্ত না নিলে আপনার কিছুক্ষণের জন্য এই পদ্ধতির সাহায্যে উইজেটের উপস্থিতি পরিবর্তন করতে সক্ষম হওয়া উচিত।


1

অ্যাপকম্প্যাট ভি 7 লাইব্রেরি ব্যবহার করে অনুসন্ধানের দৃশ্যটি কাস্টমাইজ করা সম্ভব I অঙ্কনযোগ্য ফোল্ডারে নীচে_বার্টার.এক্সএমএল ফাইল রাখুন যা দেখতে দেখতে:

 <?xml version="1.0" encoding="utf-8"?>
 <layer-list xmlns:android="http://schemas.android.com/apk/res/android" >
 <item>
  <shape >
      <solid android:color="@color/blue_color" />
  </shape>
 </item>
 <item android:bottom="0.8dp"
   android:left="0.8dp"
   android:right="0.8dp">
  <shape >
      <solid android:color="@color/background_color" />
  </shape>
 </item>

 <!-- draw another block to cut-off the left and right bars -->
 <item android:bottom="2.0dp">
  <shape >
      <solid android:color="@color/main_accent" />
  </shape>
  </item>
 </layer-list>

মানসমূহ ফোল্ডারে শৈলী_ম্যাকশনবার্থেম.এক্সএমএল:

 <?xml version="1.0" encoding="utf-8"?>
 <resources>
  <style name="AppnewTheme" parent="Theme.AppCompat.Light">
    <item name="android:windowBackground">@color/background</item>
    <item name="android:actionBarStyle">@style/ActionBar</item>
    <item name="android:actionBarWidgetTheme">@style/ActionBarWidget</item>
  </style> 
  <!-- Actionbar Theme -->
  <style name="ActionBar" parent="Widget.AppCompat.Light.ActionBar.Solid.Inverse">
    <item name="android:background">@color/main_accent</item>
    <!-- <item name="android:icon">@drawable/abc_ic_ab_back_holo_light</item> -->
  </style> 
  <style name="ActionBarWidget" parent="Theme.AppCompat.Light">
    <!-- SearchView customization-->
     <!-- Changing the small search icon when the view is expanded -->
    <!-- <item name="searchViewSearchIcon">@drawable/ic_action_search</item> -->
     <!-- Changing the cross icon to erase typed text -->
   <!--   <item name="searchViewCloseIcon">@drawable/ic_action_remove</item> -->
     <!-- Styling the background of the text field, i.e. blue bracket -->
    <item name="searchViewTextField">@drawable/bottom_border</item>
     <!-- Styling the text view that displays the typed text query -->
    <item name="searchViewAutoCompleteTextView">@style/AutoCompleteTextView</item>        
  </style>

    <style name="AutoCompleteTextView" parent="Widget.AppCompat.Light.AutoCompleteTextView">
     <item name="android:textColor">@color/text_color</item>
   <!--   <item name="android:textCursorDrawable">@null</item> -->
    <!-- <item name="android:textColorHighlight">@color/search_view_selected_text</item> -->
  </style>
 </resources>

আমি মেনু প্রদর্শনের জন্য কাস্টমেনু.এক্সএমএল ফাইলটি সংজ্ঞায়িত করেছি:

 <menu xmlns:android="http://schemas.android.com/apk/res/android"
   xmlns:com.example.actionbartheme="http://schemas.android.com/apk/res-auto" >  

  <item android:id="@+id/search"
      android:title="@string/search_title"
      android:icon="@drawable/search_buttonn"
      com.example.actionbartheme:showAsAction="ifRoom|collapseActionView"
        com.example.actionbartheme:actionViewClass="android.support.v7.widget.SearchView"/>        
  </menu>

আপনার ক্রিয়াকলাপটি ক্রিয়াকলাপের পরিবর্তে অ্যাকশনবার্তাটি বাড়ানো উচিত। এখানে onCreateOptionsMenu পদ্ধতি।

  @Override
  public boolean onCreateOptionsMenu(Menu menu) 
  {
    // Inflate the menu; this adds items to the action bar if it is present.
    MenuInflater inflater = getMenuInflater();
    inflater.inflate(R.menu.custommenu, menu);
  }

ম্যানিফেস্ট ফাইলে:

  <application
      android:allowBackup="true"
      android:icon="@drawable/ic_launcher"
      android:label="@string/app_name"
      android:theme="@style/AppnewTheme" >

আরও তথ্যের জন্য এই url দেখুন:
এখানে http://www.jayway.com/2014/06/02/android-theming-the-actionbar/


1

অনুসন্ধান ভিউ সহ অ্যাপকম্প্যাট-ভি 7 সরঞ্জামদণ্ডের জন্য (মেনুআইটেমকম্প্যাটের মাধ্যমে সরবরাহ করা):

টুলবার থিমটি @ শৈলী / থিমওভারলে.অ্যাপকম্প্যাট.লাইটে সেট করার ফলে ইঙ্গিত পাঠ্যের জন্য এবং প্রবেশ করা পাঠ্যের জন্য গা dark় রঙ (কালো) পাওয়া যাবে তবে কার্সার * রঙের উপর কোনও প্রভাব পড়বে না। তদনুসারে, টুলবার থিমটি @ শৈলীতে / থিমওভারলে.অ্যাপকম্প্যাট.ডার্কে সেট করে ইঙ্গিত পাঠ্য এবং প্রবেশ করা পাঠ্যের জন্য হালকা রঙ (সাদা) আসবে, কার্সার * যাইহোক সাদা হবে।

উপরের থিমগুলি অনুকূলিতকরণ:

অ্যান্ড্রয়েড: টেক্সট কালারপ্রাইমারি -> প্রবেশ করা পাঠ্যের রঙ

সম্পাদনা পাঠ্য রঙ -> প্রবেশ করা পাঠ্যের রঙ (অ্যান্ড্রয়েডের প্রভাবকে ওভাররাইড করবে: পাঠ্য রঙের প্রাইমারি সেট করা থাকলে)

অ্যান্ড্রয়েড: টেক্সটকালার হিন্ট -> ইঙ্গিতটির রঙ

* দ্রষ্টব্য: কার্সার রঙ কীভাবে নিয়ন্ত্রণ করা যায় তা এখনও নির্ধারণ করা যায় নি (প্রতিবিম্ব সমাধানটি ব্যবহার না করে)।


কার্সার রঙটি রঙ নিয়ন্ত্রণ থেকে আসে
হেনরি

1

এটি ব্যবহার করে আমি অনুসন্ধান দৃশ্যে টাইপ করা রঙের পাঠ্যটি পরিবর্তন করতে সক্ষম হয়েছি

AutoCompleteTextView typed_text = (AutoCompleteTextView) inputSearch.findViewById(inputSearch.getContext().getResources().getIdentifier("android:id/search_src_text", null, null));
typed_text.setTextColor(Color.WHITE);

1

কি দারুন. অনেক উত্তর। এটি আপনার প্রাথমিক রঙ থেকে রঙের মান পায়।

এটি পরিবর্তন করুন, এবং এটি সম্পন্ন!

@Override
public void onResume() {
    super.onResume();
    getActivity().setTheme(R.style.YourTheme_Searching);
}

শৈলী;

<style name="YourTheme.Searching" parent="YourTheme">
    <item name="android:textColorPrimary">@android:color/white</item>
</style>

1

অ্যান্ড্রয়েডএক্সের সাহায্যে সরঞ্জামদণ্ডে অনুসন্ধানের শৈলীর পরিবর্তন করুন।

প্রথমত, আপনার সরঞ্জামদণ্ড শৈলীতে অনুসন্ধান দর্শন শৈলী সেট করুন (আপনার নিজের অ্যাপ্লিকেশনের ভিত্তিতে তাদের পিতামাতার পরিবর্তন করুন):

     <!-- toolbar style -->
      <style name="ToolbarStyle" parent="Theme.AppCompat.Light.NoActionBar">     
          <!-- search view about -->
          <item name="android:editTextColor">@color/colorWhitePrimaryText</item>
          <item name="android:textColorHint">@color/colorWhiteSecondaryText</item>
          <item name="android:textCursorDrawable">@drawable/drawable_cursor_white</item>
          <item name="closeIcon">@mipmap/ic_close</item>
          <item name="searchHintIcon">@mipmap/ic_search_white</item>
          <item name="searchIcon">@mipmap/ic_search_white</item>
          <item name="android:longClickable">false</item>
          <item name="android:queryHint">@string/toolbar_search</item>
      </style> 

তারপরে, এটি আপনার সরঞ্জামদণ্ডের বিন্যাসে ব্যবহার করুন:

android:theme="@style/ToolbarStyle"

এটির সাহায্যে আপনি কোয়েরি ইঙ্গিত বাদে সন্ধান ভিউয়ের সর্বাধিক স্টাইল পরিবর্তন করতে পারেন।

অবশেষে আপনার টুলবার মেনুর বিকল্পগুলিতে ক্যোয়ারী ইঙ্গিতটি সেট করুন:

toolbar.setOnMenuItemClickListener(item -> {
        switch (item.getItemId()){
            case R.id.toolbar_search:
                SearchView searchView = (SearchView) item.getActionView();
                searchView.setQueryHint("default query");
                searchView.setOnQueryTextListener(new SearchView.OnQueryTextListener() {
                    @Override
                    public boolean onQueryTextSubmit(String query) {
                        return false;
                    }

                    @Override
                    public boolean onQueryTextChange(String newText) {
                        return false;
                    }
                });
                return true;
                default:
                    return false;
        }

"অনুসন্ধান ভিউ স্টাইল" এর আওতায় কিছু পোস্ট করার অর্থ কি?
ডেভিডডাব্লু

আমি আমার সমাধানটি সম্পূর্ণ করেছি এবং সরলীকরণ করেছি, সম্ভবত এটি আপনাকে সহায়তা করতে পারে।
ব্যবহারকারী 2333

0
searchView = (SearchView) view.findViewById(R.id.searchView);

SearchView.SearchAutoComplete searchText = (SearchView.SearchAutoComplete) searchView
      .findViewById(org.holoeverywhere.R.id.search_src_text);
searchText.setTextColor(Color.BLACK);

আমি হলিওভারেওয়েস লাইব্রেরি ব্যবহার করছি। Org.holoeverybody.R.id.search_src_text নোট করুন


0

আমি একটি ব্লগ পোস্ট থেকে একটি সমাধান খুঁজে পেয়েছি। এখানে দেখুন ।

মূলত আপনি অনুসন্ধান ভিউআউটো কমপ্লিটেক্সটভিউয়ের স্টাইল করেন এবং এন্ড্রয়েড থাকুন: অ্যাকশনবারজিডটেমটি স্টাইলটির উত্তরাধিকারী।


0

এটা আমার সাথে কাজ করে

@Override
public boolean onPrepareOptionsMenu(Menu menu) {
    MenuItem searchItem = menu.findItem(R.id.action_search);
    EditText searchEditText = (EditText) searchView.getActionView().findViewById(android.support.v7.appcompat.R.id.search_src_text);
    searchEditText.setTextColor(getResources().getColor(R.color.white));
    searchEditText.setHintTextColor(getResources().getColor(R.color.white));
    return super.onPrepareOptionsMenu(menu);
}


0

কোটলিন ভাষার জন্য

    searchView = view.findViewById(R.id.searchView_Contacts)
    // change color
    val id = searchView.context.resources
        .getIdentifier("android:id/search_src_text", null, null)

    val textView = searchView.findViewById<View>(id) as TextView

    textView.setTextColor(Color.WHITE)
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.