কীভাবে কোনও ক্রিয়াকলাপের ব্যাকগ্রাউন্ড কালারটি সাদা প্রোগ্রামায়েটিকভাবে সেট করবেন?


128

আমি কীভাবে কোনও ক্রিয়াকলাপের পটভূমির রঙ সাদা প্রোগ্রামায়মেটিকভাবে সেট করতে পারি?

উত্তর:


142

ব্যবহৃত মূল বিন্যাসে একটি হ্যান্ডেল পান, তারপরে পটভূমির রঙ সেট করুন। মূল লেআউটটি সেটাকে কনট্যান্টভিউ বলেই ডাকে।

 setContentView(R.layout.main);

  // Now get a handle to any View contained 
  // within the main layout you are using
  View someView = findViewById(R.id.randomViewInMainLayout);

  // Find the root view
  View root = someView.getRootView();

  // Set the color
  root.setBackgroundColor(getResources().getColor(android.R.color.red));

আমি যখন এটি করি, তখন এগ্রিপসটি এটিতে "এখানে রিসোর্স আইডির পরিবর্তে সমাধান হওয়া রঙটি পাস করা উচিত: getRes উত্স ()। GetColor (android.R.color.red) দিয়ে ফ্ল্যাগ করে।
জোরিকি

25
শেষ লাইনটি এতে পরিবর্তন করুনroot.setBackgroundColor(getResources().getColor(android.R.color.red));
লুইস মেন্ডো

এই উত্তর কাজ করে; তবে এটি এখনও প্রশ্নকর্তার হিসাবে সম্পূর্ণ প্রোগ্রামেটিক নয়। আমি নীচে অরুনকুমারের উত্তরটি পরামর্শ দেব।
কেভিশ

263

setContentView()কল করার পরে আপনার ক্রিয়াকলাপে এই একক লাইন যুক্ত করুন

getWindow().getDecorView().setBackgroundColor(Color.WHITE);

4
সম্মত হয়। রুট লেআউট প্রয়োগ করার আগে এটি উইন্ডোটির রঙ পরিবর্তন করে, স্বীকৃত উত্তর ক্রিয়াকলাপের বিন্যাসে মূল উপাদানটির রঙ পরিবর্তন করে
LairdPleng

1
আমি মনে করি এটির একটি সঠিক হওয়া উচিত, যদি আপনি কেবল ক্রিয়াকলাপের পটভূমি রঙ সেট করতে চান।
শানভু

এটি রুট উইন্ডোটির রঙ পরিবর্তন করার সাথে সাথে আমার +1 রয়েছে
এমপার্কস

এটি অবশ্যই সেরা উত্তর
1QuickQuestion

এটি করার জন্য এটি সবচেয়ে সহজ পদ্ধতি। আসলে একজনের চেয়ে ভাল!
দিনিথ

85

আমি থিম অনুসারে রঙ পছন্দ

<style name="CustomTheme" parent="android:Theme.Light">
    <item name="android:windowBackground">@color/custom_theme_color</item>
    <item name="android:colorBackground">@color/custom_theme_color</item>
</style>

22
উইন্ডোব্যাকগ্রাউন্ড এবং রঙব্যাকগ্রাউন্ডের মধ্যে পার্থক্য কী?
অ্যালিকেলজিন-কিলাকা

1
কেবল উইন্ডোব্যাকগ্রাউন্ড সেট করুন এবং এটি দুর্দান্ত কাজ করে। কালারব্যাকগ্রাউন্ডের ব্যবহার কী?
কোডজজেক্স

8
@ অ্যালিক্লিজিন-কিলাকা: পার্থক্যটি হ'ল অ্যাপটি শুরু হওয়ার পরে android:windowBackgroundপ্রথমে একটি সংক্ষিপ্ত মুহুর্তের জন্য দৃশ্যমান হয় এবং তারপরে বিন্যাসের ব্যাকগ্রাউন্ডের রঙটি নিয়ে যায়। সুতরাং আপনি যদি দুটি ভিন্ন রঙ ব্যবহার করেন তবে এটি স্ক্রিনে ঝাঁকুনি দেবে।
GoTo

2
windowBackgroundকেবল উইন্ডো ব্যাকগ্রাউন্ডকেই colorBackgroundপ্রভাবিত করে , তবে সমস্ত দৃশ্যকেও প্রভাবিত করে। stackoverflow.com/questions/26266221/...
fdermishin

60
?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:orientation="vertical"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:background="#FFFFFF"
android:id="@+id/myScreen"
</LinearLayout>

অন্য কথায়, "অ্যান্ড্রয়েড: ব্যাকগ্রাউন্ড" হল আপনি যে এক্সএমএলটি পরিবর্তন করতে চান তা ট্যাগ tag

আপনার যদি গতিশীলভাবে পটভূমির মান আপডেট করতে হয় তবে নিম্নলিখিতটি দেখুন:

অনুশীলন: সিকবারের মাধ্যমে পটভূমির রঙ পরিবর্তন করুন


মিম ভাল পয়েন্ট। নির্বিশেষে, লিংকটি আমি সেই প্রশ্নের উত্তরটি বেশ হাততালি দিয়েছি।
I82Much

আমি মনে করি না আপনি রঙের জন্য আমাকে সঠিক মান দিন! আমি পেয়েছি #FFFFFF
এসজেএস

এটি আমাদের মধ্যে যারা এক্সএমএল করতে চান এবং একটি গুগল অনুসন্ধানের মাধ্যমে এখানে এসেছিলেন তাদের জন্য এটি একটি উত্তম উত্তর।
কেসি

9

আপনার onCreate()পদ্ধতিতে:

getWindow().getDecorView().setBackgroundColor(getResources().getColor(R.color.main_activity_background_color));

এছাড়াও আপনাকে মানগুলির ফোল্ডারে যুক্ত হওয়া একটি নতুন এক্সএমএল ফাইল বলা উচিত color.xmlএবং সেখানে একটি নতুন রঙের সম্পত্তি নির্ধারণ করতে হবে:

color.xml:

<?xml version="1.0" encoding="utf-8"?>
<resources>
<color name="main_activity_background_color">#000000</color>
</resources>

মনে রাখবেন যে আপনি যে color.xmlনামটি চান তার নাম রাখতে পারেন তবে কোড হিসাবে আপনি এটি উল্লেখ করেন R.color.yourId

সম্পাদনা

কারণ getResources().getColor()নিন্দা করা হয়েছে, ব্যবহার getWindow().getDecorView().setBackgroundColor(ContextCompat.getColor(MainActivity.this, R.color.main_activity_background_color)); পরিবর্তে।


8

আপনি এটি পূর্বনির্ধারিত অ্যান্ড্রয়েড রঙগুলিতে কল করতে ব্যবহার করতে পারেন:

element.setBackgroundColor(android.R.color.red);

আপনি যদি নিজের নিজস্ব কাস্টম রঙ ব্যবহার করতে চান তবে আপনি নিজের কাস্টম রঙটি স্ট্রিং.এক্সএমএল এ যুক্ত করতে পারেন এবং তারপরে কল করতে নীচেরটি ব্যবহার করতে পারেন।

element.setBackgroundColor(R.color.mycolour);

তবে আপনি যদি আপনার লেআউট.এক্সএমএল রঙটি সেট করতে চান তবে আপনি যে কোনও উপাদান গ্রহণ করে তা নীচে সংশোধন করতে এবং যোগ করতে পারেন।

android:background="#FFFFFF"

আমি যদি প্রথম কৌশলটি ব্যবহার করি তবে আমি একটি সতর্কতা পেয়েছি যে এটি আসলে এইরকম অ্যাক্সেস করা উচিত: গেটআরসোর্সেস () get getCoror (android.R.color.black);

3

অ্যাকশন বার ছাড়াই আপনার এক্সএমএল ফাইলে সংজ্ঞায়িত রুট ভিউটি পেতে, আপনি এটি ব্যবহার করতে পারেন:

View root = ((ViewGroup) findViewById(android.R.id.content)).getChildAt(0);

সুতরাং, রঙ সাদা করতে:

root.setBackgroundResource(Color.WHITE);

3
View randview = new View(getBaseContext());
randview = (View)findViewById(R.id.container);
randview.setBackgroundColor(Color.BLUE);

আমার জন্য কাজ। ধন্যবাদ.


এই উত্তরটি নিম্নমানের পোস্ট পর্যালোচনা সারিতে রয়েছে কারণ এটি কোনও ব্যাখ্যা ছাড়াই কেবল কোড। আপনার কোডটি কী করে এবং কীভাবে প্রশ্নের উত্তর দেয় তা ব্যাখ্যা করে আপনার উত্তরটি উন্নত করুন। সহায়তার সাথে প্রোগ্রামিং প্রশ্নগুলির উত্তর দেওয়ার জন্য এই পরামর্শটি পড়ুন ।
আদি ইনবার

2
কিন্ডা মজার বিষয় যা এটি পরিষ্কারভাবে নীল রঙে এবং অনুরোধ অনুসারে সাদা নয় sets
কনরাড লিন্ডেনবাচ

1
final View rootView = findViewById(android.R.id.content);
rootView.setBackgroundResource(...);

1
Button btn;
View root;
@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_main);
    btn = (Button)findViewById(R.id.button);

    btn.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View view) {
            root =findViewById(R.id.activity_main).getRootView();
            root.setBackgroundColor(Color.parseColor("#FFFFFF"));
        }
    });
}
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.