অ্যান্ড্রয়েড স্ট্রিং মান হিসাবে রঙ পেতে


104

যদি আমি সংস্থানগুলিতে একটি রঙ সংজ্ঞায়িত করি

<resources>
    <color name="someColor">#123456</color>
</resources>

এটির মতো আইডি দ্বারা রঙ নির্ধারণ করা সম্ভব

view.setTextColor(R.color.someColor);

রং.এক্সএমএল থেকে রঙের স্ট্রিংয়ের মান পাওয়া কি সম্ভব?

কিছুটা এইরকম

colorStr = getColor(R.color.someColor);
// -> colorStr = "#123456"

হ্যাঁ, কেউ উদাহরণ দিতে পারেন?

ধন্যবাদ

উত্তর:


151

এটি আপনার উত্তর

colorStr=getResources().getString(R.color.someColor);

তুমি পাবে

 colorStr = "#123456"

5
প্রথম, আপনাকে ধন্যবাদ। আমি রঙের জন্য গেটস্ট্রিং ব্যবহার করার কথা ভাবিনি। এটি কাজ করে, তবে colorStr = "# 123456" এর পরিবর্তে আমি "# ff123456" পাচ্ছি, এবং এটি দুর্দান্ত নয় :(
টিমা

7
আলফা কাজগুলি সরাতে ফেরত রঙের স্ট্রিংয়ের একটি সাধারণ স্ট্রিং ring । getResources () GetString, (R.color.my_colour) .substring (3);
স্কটিয়াব

82
এটি আর কাজ করছে না, ত্রুটি 'স্ট্রিংয়ের প্রত্যাশিত সংস্থান'
ক্লাইভ জেফারিজ

21
ক্লাইভ জেফারিগুলি আপনি //noinspection ResourceTypeআপনার বক্তব্যের ঠিক উপরে যোগ করতে পারেন ।
লর্ডমেগাম্যাক্স

15
getResources().getString(0+R.color.someColor);কাজ
18446744073709551615

139

সহজ কপিপাস্টার খাতিরে:

"#" + Integer.toHexString(ContextCompat.getColor(getActivity(), R.color.some_color));

বা যদি আপনি স্বচ্ছতা ছাড়াই এটি চান:

"#" + Integer.toHexString(ContextCompat.getColor(getActivity(), R.color.some_color) & 0x00ffffff);

8
এটি দুর্দান্ত কাজ করেছে, তবে আমার '#' + Integer.toHexString(getResources().getColor(R.color.someColor);পরে এটি ব্যবহার করে এটি সংশোধন করা দরকারColor.parseColor
gattsbr

4
জিন কালারের () এপিআই> 23
হোনহে.উইউ 19'16

1
আপনি অবহেলিত getColor ব্যবহার করতে পারেন () কোনও সমস্যা নেই। কেবলমাত্র "গেটকালার (...)" মুছুন এবং আবার এটি টাইপ করুন, অ্যান্ড্রয়েডের অবহেলিত গেটকলার কল দিয়ে মেথড কলটি সম্পূর্ণ করতে ইন্টেলিজেন্স ব্যবহার করুন এবং আপনি ভাল।
ওয়েজ উইন

ইন্টিজার.টোহেক্সস্ট্রিং (কনটেক্সটকম্প্যাট.জেট কালার (প্রসঙ্গ, আরক্লোর.ব্ল্যাক) এবং 0x00ffffff);
AITAALI_ABDERRAHMANE

8
হেক্স রঙের প্রথমদিকে 0 থাকলে এটি কাজ করবে না।
asish

26

উপরে প্রদত্ত উত্তরগুলি আপডেট করা হয়নি।

এটি চেষ্টা করুন

String colorHex = "#" + Integer.toHexString(ContextCompat.getColor(getActivity(), R.color.dark_sky_blue) & 0x00ffffff);

23

Integer.toHexString()আপনার হেক্স স্ট্রিংয়ের নেতৃস্থানীয় শূন্যগুলি যদি বিরতি ব্যবহার করে এখানে সলিউশনগুলির সবগুলিই থাকে। রঙ পছন্দ #0affffকরে #affff। পরিবর্তে এটি ব্যবহার করুন:

String.format("#%06x", ContextCompat.getColor(this, R.color.your_color) & 0xffffff)

বা আলফা সহ:

String.format("#%08x", ContextCompat.getColor(this, R.color.your_color) & 0xffffffff)

9

কারণের getResources().getColorজন্য এপিআই> ২৩ প্রয়োজন better

Integer.toHexString( ContextCompat.getColor( getContext(), R.color.someColor ) );

বা যদি আপনি এটি স্বচ্ছতা ছাড়াই চান: `

Integer.toHexString( ContextCompat.getColor( getContext(), R.color.someColor ) & 0x00ffffff );


ContextCompat.getColor3 টি আর্গুমেন্ট নেয় না
নাশে

@ না এটি 2 টি যুক্তি, 3 নয়!
বেহরোজ.এম

4

21-র উপরের API এর জন্য আপনি ব্যবহার করতে পারেন

getString(R.color.color_name);

এটি স্ট্রিং ফর্ম্যাটে রঙটি ফিরিয়ে দেবে। এটিকে পূর্ণসংখ্যার বিন্যাসে কোনও রঙে রূপান্তর করতে (কখনও কখনও কেবল পূর্ণসংখ্যা গ্রহণ করা হয়) তবে:

Color.parseColor(getString(R.color.color_name));

উপরের এক্সপ্রেশনটি color.xML ফাইলে সংজ্ঞায়িত রঙের পূর্ণসংখ্যার সমতুল্য প্রদান করে


2

যদি কোনও ত্রুটি দেখা দেয় তবে @ সাপ্রেসলিঙ্ক ("রিসোর্সটাইপ") যুক্ত করুন। বেলো পছন্দ।

private String formatUsernameAction(UserInfo userInfo, String action) {
        String username = userInfo.getUsername();
        @SuppressLint("ResourceType") String usernameColor = getContext().getResources().getString(R.color.background_button);
        return "<font color=\""+usernameColor+"\">" + username
                + "</font> <font color=\"#787f83\">" + action.toLowerCase() + "</font>";
    }

1

আমি মনে করি না যে এর জন্য মানক কার্যকারিতা আছে। তবে getColor()আপনি ফেরতটি মান থেকে হেক্সে এবং হেক্স মানকে স্ট্রিংয়ে পরিণত করতে পারেন।

hex 123456 = int 1193046;


1

আমি এটি এইভাবে করেছি:

String color = "#" + Integer.toHexString(ContextCompat.getColor
(getApplicationContext(), R.color.yourColor) & 0x00ffffff);


-4

আপনি যদি ব্যবহার করতে না চান ContextCompatবা SuppressLint, কেবল stringআপনার নীচে একটি সংস্থান যুক্ত করুন color

পরিবর্তে

<color name="text_color">#FFFFFF</color>

ব্যবহার

<color name="text_color">#FFFFFF</color>
<string name="text_color_string">#FFFFFF</string>

আপনার কোডটি আরও পুনরাবৃত্তি পেতে পারে তবে এটি অনেক পরিষ্কার। এছাড়াও, stringপরিবর্তনের পরে আপডেট করা ভুলে যাওয়া colorপ্রায় অসম্ভব কারণ তারা একে অপরের ঠিক পাশেই রয়েছে।


সদৃশ সর্বদা একটি খারাপ ধারণা
লুকাস্জ
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.