プログラムでアクティビティの背景色を白に設定するにはどうすればよいですか?
使用されるルートレイアウトへのハンドルを取得し、その背景色を設定します。ルートレイアウトは、setContentViewと呼ばれるものです。
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));
setContentView()
呼び出しの後、アクティビティにこの1行を追加します
getWindow().getDecorView().setBackgroundColor(Color.WHITE);
テーマごとのカラーリングが好き
<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>
?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>
つまり、「Android:background」は、変更するXMLのタグです。
バックグラウンド値を動的に更新する必要がある場合は、次を参照してください。
これを使用して、定義済みのAndroid色を呼び出すことができます。
element.setBackgroundColor(Android.R.color.red);
独自のカスタムカラーのいずれかを使用する場合は、strings.xmlにカスタムカラーを追加してから、以下を使用して呼び出すことができます。
element.setBackgroundColor(R.color.mycolour);
ただし、layout.xmlで色を設定する場合は、それを受け入れる要素に以下を変更して追加できます。
Android:background="#FFFFFF"
onCreate()
メソッドで:
getWindow().getDecorView().setBackgroundColor(getResources().getColor(R.color.main_activity_background_color));
また、color.xml
という新しいXMLファイルをvaluesフォルダーに追加し、そこに新しいカラープロパティを割り当てる必要があります。
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));
を使用してください。
アクションバーなしでxmlファイルで定義されたルートビューを取得するには、これを使用できます。
View root = ((ViewGroup) findViewById(Android.R.id.content)).getChildAt(0);
したがって、色を白に変更するには:
root.setBackgroundResource(Color.WHITE);
View randview = new View(getBaseContext());
randview = (View)findViewById(R.id.container);
randview.setBackgroundColor(Color.BLUE);
私のために働いた。ありがとうございました。
final View rootView = findViewById(Android.R.id.content);
rootView.setBackgroundResource(...);
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"));
}
});
}
私は同様の問題を抱えていて、上記の回答に記載されている手順に従いました。私が私のために働いたものを共有します。
私はRecyclerViewを使用していて、アイテムの背景色を設定していました。ただし、アイテムの数が画面に収まらない場合は奇妙に見えました
次に、関数を使用しました
public void setActivityBackgroundColor(int color) {
View view = this.getWindow().getDecorView();
view.setBackgroundColor(color);
}
そして、別の関数のコードで関数setActivityBackgroundColor(R.color.colorAccent);
を呼び出しました。 このレイアウト につながりました。かなり変だ。
最終的に、 KitKat の提案に従って修正しました。
public void setActivityBackgroundColor(int color) {
View view = this.getWindow().getDecorView();
view.setBackgroundResource(color);
}
これが最終的に 修正済み です。
編集:RecyclerViewにデータが入力されていない場合、ソリューションはエラーをスローし始めました。その場合、ビューが空かどうかを確認するフラグを設定します。
public void setActivityBackgroundColor(int color) {
View view = this.getWindow().getDecorView();
if (dataIsNull) {
view.setBackgroundColor(color);
}
else {
view.setBackgroundResource(color);
}
}
今では魅力のように機能します。
これを使って :
myActivity.setBackgroundColor(ContextCompat.getColor(this, R.color.colorWhite));