কীভাবে কোনও দৃশ্যের পটভূমি রঙ সেট করবেন


178

আমি একটি দৃশ্যের পটভূমি রঙ সেট করার চেষ্টা করছি (এক্ষেত্রে একটি বোতাম)।

আমি এই কোডটি ব্যবহার করি:

// set the background to green
v.setBackgroundColor(0x0000FF00 );
v.invalidate();

এটি বোতামটি পর্দা থেকে অদৃশ্য হয়ে যায়। আমি কী ভুল করছি এবং কোনও দৃশ্যে পটভূমির রঙ পরিবর্তন করার সঠিক উপায় কী?

ধন্যবাদ।


1
এটা সঠিক দেখাচ্ছে। আসলে, আমি আপনাকে অবৈধ () কল করতে হবে বলে মনে করি না। আপনি যখন বলছেন বোতামটি অদৃশ্য হয়ে গেছে, আপনি কি আক্ষরিক অর্থে বলতে চান বা আপনার অর্থ বাটনটির কোনও পাঠ্য বা কোনও চিত্র অদৃশ্য হয়ে গেছে?
রিকনটফ্রেড

উত্তর:


280

আপনি আপনার বোতামটি স্বচ্ছ করে তুলেছেন। প্রথম বাইটটি আলফা।

চেষ্টা v.setBackgroundColor(0xFF00FF00);


2
নীচে এডিবির উত্তর আরও ভাল কারণ এটি কোনও সীমানা ইত্যাদি সরিয়ে দেয় যেমন এডিটেক্সট এর আন্ডারলাইনিং
গল্টেন আইস

@আরথ আরও ভাল রং? গ্রীন? আমি যদি আরগবির সাথে রঙটি সম্পূর্ণ করতে চাই? ... আপনার উত্তর
অবহেলা

2
@ ডেলিভ - আবার আসবেন? Color.GREEN হ্রাস করা হয় না , এবং এতে আলফা বাইট অন্তর্ভুক্ত রয়েছে। এটা তোলে এর মান 0xff00ff00, ঠিক একই হিসাবে কি, উত্তরে প্রস্তাব দেওয়া হচ্ছে ব্যতীত এটি হচ্ছে সুবিধা রয়েছে পাঠযোগ্য । বেশিরভাগ বিকাশকারী একটি মানব-পঠনযোগ্য সমাধান পছন্দ করবেন prefer
অ্যারোথ

144

আপনি যখন সেটব্যাকগাউন্ড কালার কল করবেন তখন এটি কোনও সীমানা, কোণ, প্যাডিং সহ যে কোনও বিদ্যমান পটভূমি রিসোর্সকে ওভাররাইট করে / মুছে ফেলে you

View v;
v.getBackground().setColorFilter(Color.parseColor("#00ff00"), PorterDuff.Mode.DARKEN);

বিভিন্ন প্রভাবের জন্য পোর্টারডাফ.মড। * নিয়ে পরীক্ষা করুন।


"কোনও বিদ্যমান পটভূমি রিসোর্সকে ওভাররাইট / মুছে ফেলা হয়" সত্যই নয়।
ইউশা আলেয়ুব

2
আমাকে উপরের ভিটিওএলডিট () সহ ব্যবহার করতে হয়েছিল; পরের লাইনে
হাশিম আক্তার

1
এই নষ্ট সময়টির চেষ্টা করে স্বীকৃত উত্তরটি দিয়ে গেলেন, v.getBackground () নালপয়েন্টার ব্যতিক্রম দিয়েছে এবং ক্র্যাশ হয়েছে।
সিদ্ধার্থ জি

এই প্লাস পোর্টারডাফ.মড.এসআরসিএনপি আমার জন্য সমাধান করেছেন যাতে আমি আমার পটভূমি সীমানাটি হারাব না।
গিলহর্মি কারভালহো

123

এটি করার জন্য বেশ কয়েকটি পছন্দ ...

পটভূমি সবুজ হিসাবে সেট করুন:

v.setBackgroundColor(0x00FF00);

সঙ্গে সবুজ সেট পটভূমি আলফা :

v.setBackgroundColor(0xFF00FF00);

রঙের সাথে সবুজতে ব্যাকগ্রাউন্ড সেট করুন RE সবুজ ধ্রুবক:

v.setBackgroundColor(Color.GREEN);

Colors.xml এ সবুজ সংজ্ঞায়িত করতে ব্যাকগ্রাউন্ড সেট করুন

<?xml version="1.0" encoding="utf-8"?>
<resources>     
    <color name="myGreen">#00FF00</color> 
    <color name="myGreenWithAlpha">#FF00FF00</color> 
</resources>

এবং ব্যবহার:

v.setBackgroundResource(R.color.myGreen);

এবং:

v.setBackgroundResource(R.color.myGreenWithAlpha);

বা দীর্ঘ বাতাস:

v.setBackgroundColor(ContextCompat.getColor(getContext(), R.color.myGreen));

এবং:

v.setBackgroundColor(ContextCompat.getColor(getContext(), R.color.myGreenWithAlpha));


5
এছাড়াও রয়েছে: v.setBackgroundResource(R.color.myGreen);ব্যবহার করার সময়colors.xml
মারাত্মক

invalidateকলগুলি সরানো হয়েছে , আপনি দেখতে পাচ্ছেন setBackground... পদ্ধতি ইতিমধ্যে যে কল।
ওয়েস্টন

v.setBackgroundColor(0x00FF00);কেবলমাত্র তাদের কোড যা তারা বলে যে কাজ করছে না। আমি এটিও স্বচ্ছ হতে পারে আশা করি।
ওয়েস্টন


16
// set the background to green
v.setBackgroundColor(0x0000FF00 );
v.invalidate();

কোডটি সবুজ বোতামটি সেট করে না। পরিবর্তে, এটি বোতামটি সম্পূর্ণ অদৃশ্য করে তোলে।

ব্যাখ্যা: রঙের হেক্স মানটি ভুল। শূন্যের আলফা মান সহ, রঙটি অদৃশ্য হবে।

সঠিক হেক্স মানটি 0xFF00FF00সম্পূর্ণ ধূসর বর্ণের জন্য for 00 এবং FF এর মধ্যে যে কোনও আলফা মান স্বচ্ছতার কারণ হতে পারে।


12

এবং কোনও ভিউ এর পটভূমির রঙ পরিবর্তন করার সঠিক উপায় কী?

উপর কোন View ? আপনার যা আছে তা সঠিক, যদিও আপনার invalidate()কলটি ড্রপ করা উচিত ।

যাইহোক, কিছু Viewsইতিমধ্যে ব্যাকগ্রাউন্ড আছে। এ Button, উদাহরণস্বরূপ, ইতিমধ্যে একটি ব্যাকগ্রাউন্ড রয়েছে: বোতামটির মুখ নিজে। এই ব্যাকগ্রাউন্ডটি হ'ল একটি StateListDrawable, যা আপনি android-2.1/data/res/drawable/btn_default.xmlআপনার অ্যান্ড্রয়েড এসডিকে ইনস্টলেশনটিতে সন্ধান করতে পারেন । এটি, পরিবর্তে, নয়-প্যাচ বিটম্যাপ চিত্রগুলির একগুচ্ছ বোঝায়, একাধিক ঘনত্বগুলিতে উপলভ্য। আপনার সবুজ লক্ষ্য অর্জনের জন্য আপনাকে এগুলি সব ক্লোন এবং সংশোধন করতে হবে।

সংক্ষেপে, একটি এর পটভূমি পরিবর্তন করার চেষ্টা করার পরিবর্তে আপনাকে আরও একটি ইউআই প্যাটার্ন সন্ধান করার জন্য আরও ভাল পরিবেশিত হবে Button


ঠিক আছে, বাটন ব্যাকগ্রাউন্ড সম্পর্কে ব্যাখ্যা জন্য ধন্যবাদ। নাইন প্যাচ বিটম্যাপস ( বিকাশকারী। অ্যান্ড্রয়েড.com/references/android/ographicics/NinePatch.html ) আমার জন্য নতুন ছিল। আমি কোনও বোতাম টিপলে আমি কেবল পর্দার যে কোনও কিছুর রঙ পরিবর্তন করতে চাই। বোতামগুলি একটি পাঠ্যদর্শন রয়েছে। এর রঙ পরিবর্তন করার চেষ্টা করে, কনসোল বার্তাগুলির দিকে নিয়ে যায় "ডিডিএম প্রেরণের জন্য রেজি অপেক্ষা করার সময়সীমা ... অ্যাক্টিভিটি ম্যানেজার: ডিডিএম অংশ প্রেরণ করতে পারে না 52454151: কোনও হ্যান্ডলার সংজ্ঞায়িত করা হয়নি" এবং স্ক্রিনে একটি ডায়ালগ "অ্যাপটি অপ্রত্যাশিতভাবে বন্ধ হয়ে গেছে"। অনুমান করি ইউআইতে আমার আরও বেশি পড়া দরকার। যে কোনও ইঙ্গিত স্বাগত। ধন্যবাদ।
পিটার ভিডিএল

11

প্রথম রঙটি স্ক্রিনে দেখা যাবে সেট করার জন্য, আপনি এই সম্পত্তিটি প্রাসঙ্গিক ভিউতে যুক্ত করে প্রাসঙ্গিক বিন্যাস.এক্সএমএল (আরও ভাল নকশা) এ এটি করতে পারেন:

android:background="#FF00FF00"

প্রশ্নটি পরিষ্কার করে দেয় যে রঙ পরিবর্তনটি গতিশীল হওয়া দরকার।
পিটার ভিডিএল


6

আমি এপিআই মিনিট 16, টার্গেট 23 এ ব্যবহার করি

Button WeekDoneButton = (Button) viewWeeklyTimetable.findViewById(R.id.week_done_button);

WeekDoneButton.setBackgroundColor(ContextCompat.getColor(getActivity(), R.color.colorAccent));

সাধারণত অনেকগুলি ডিফল্ট রঙ থাকে না। নতুন
বর্ণগুলি



4

এই প্রশ্নটি একটি দৃশ্যের পটভূমির রঙ পরিবর্তন করার বিষয়ে কথা বলে। উত্তরের একটিতে, ব্যক্তি রানটাইমের সময় কীভাবে পটভূমির রঙ পরিবর্তন করবেন তা ব্যাখ্যা করে। স্পষ্টতই আপনি কীভাবে স্ক্রিনের অন্যান্য অবজেক্টগুলিকে সংশোধন করবেন সে বিষয়ে সন্ধান করতে যাচ্ছেন, তবে এটি আপনাকে কমপক্ষে বোতামের ক্লিকের দৃশ্যের পটভূমির রঙ পরিবর্তন করার মাধ্যমে একটি ভাল সূচনা দেওয়া উচিত।


3

অ্যান্ড্রয়েড 6 এর সাথে স্ট্যাটিং কনটেক্সট কমপ্যাক্ট ব্যবহার করুন

        view.setBackgroundColor( ContextCompat.getColor(this, R.color.your_color));


2

ইন kotlin আপনি এটা ভালো কাজ করতে পারে:

val backgroundColor = R.color.whatever_color_you_like
view.setBackgroundColor(getColorCompat(backgroundColor))

getColorCompat()একটি এক্সটেনশন ফাংশন কোথায় :

/**
 * Extension method to provide simpler access to {@link ContextCompat#getColor(int)}.
 */

 fun Context.getColorCompat(color: Int) = ContextCompat.getColor(this, color)

1
view.setBackgroundColor(R.color.primaryColor);

পূর্ববর্তী রঙ মানটিতে রঙ যুক্ত করে, তাই আমার একটি আলাদা রঙ রয়েছে।

আমার জন্য যা কাজ করে তা হ'ল:

view.setBackgroundResource(R.color.primaryColor);

1

ধরা যাক আমাদের এখানে প্রাথমিক রঙ রয়েছে values=>colors.xml:

<resources>
    <color name="primary">#FDD835</color>
</resources>

সুতরাং আমরা যদি আমাদের কাস্টম রঙটি এর মধ্যে ব্যবহার করতে চাই setBackgroundColor(@ColorInt int Color)তবে আমাদের কেবল @SuppressLint("ResourceAsColor")কনস্ট্রাক্টর / পদ্ধতিযুক্ত একটি টীকা লাগবে যা ব্যবহার করা হবে:

    @SuppressLint("ResourceAsColor")
    public _LinearLayout(Context context) {
        super(context);

        // Formatting our layout : )
        super.setBackgroundColor(R.color.primary);

        ....


    }

0

আপনার অবশ্যই intযুক্তিতে একটি পাস করতে হবে ।

প্রথম উদাহরণ:

view.setBackgroundColor(-500136)

দ্বিতীয় উদাহরণ:

int colorId = R.color.green;

view.setBackgroundResource(colorId);


0

আমি উপরের সমস্ত উপায় চেষ্টা করেছিলাম। তবে আমার যা প্রয়োজন তা অর্জন করতে পারিনি। এখানে আমার চেষ্টা। আপনি যদি রঙের জন্য হেক্সকোড ব্যবহার করছেন এবং রঙটিকে চিত্রের পটভূমি হিসাবে সেট করতে চান তবে এটি কোটলিন কোড।

val bitmap = Bitmap.createBitmap(30, 30, Bitmap.Config.ARGB_8888)
val canvas = Canvas(bitmap)
val colorCode = "#ffffff"
canvas.drawColor(Color.parseColor(colorCode))
mImageViewLogo.setImageBitmap(bitmap)
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.