Androidレイアウト要素の背景色の設定


198

私は、Android UIデザインの一連のスライドからアクティビティのデザインを少しクローンしようとしています。しかし、私は非常に単純なタスクで問題を抱えています。

画像のようにレイアウトを作成しTextViewましたRelativeLayout。ヘッダーはのです。の背景色を変更したいのですがRelativeLayout、どうすればいいのかわかりません。

XMLファイルのタグでandroid:backgroundプロパティを設定できることはわかっていRelativeLayoutますが、何に設定しますか?複数の場所で使用できる新しい色を定義したい。それはdrawableまたはstringですか?

さらに、私はEclipse Android UIデザイナー内からこれを行う非常に簡単な方法が欠けていると予想しますか?

これは最大で数回のクリックで実行されるアクティビティであるため、私は現在少しイライラしています。だからどんな助けも非常に感謝しています。:)

Androidアクティビティデザイン


28
右側にグラフを描くためにどのソフトウェアを使用しましたか?
lucas

8
@lucas:質問で述べたように、私は図を描きませんでした、それはAndroid UIデザインの一連のスライドからのものです。質問のリンクを参照してください。
Bjarke Freund-Hansen

回答:


280

通常は内部で指定されている単純なカラーリソースを使用できますres/values/colors.xml

<color name="red">#ffff0000</color>

そしてこれを介してこれを使用しandroid:background="@color/red"ます。この色は、テキストの色など、他の場所でも使用できます。同じ方法でXMLで参照するか、を介してコードで取得しますgetResources().getColor(R.color.red)

また、任意のドローアブルリソースを背景として使用することもできます。android:background="@drawable/mydrawable"これには、9patchドローアブル、通常のビットマップ、シェイプドローアブルなどを使用します。


6
ありがとうございます。私がこれを読んだはずのリファレンスを私に教えてもらえますか?
Bjarke Freund-Hansen

6
うーん実際には:いいえ。ドキュメントを検索しただけです。これはかなり標準的なAndroidのものですが、実際にドキュメント化されている場所はありません。開発サイトのチュートリアルもAPIサンプルもこれを利用していません。いくつかの機能に関しては、android docが少し不足しています。私はいくつかの外部チュートリアルで偶然それを拾ったと思います。通常は、APIサンプルとサンプルプロジェクトを参照することをお勧めします。ANDROID_SDK\samplesフォルダー内のコードを見つけることができます(さまざまなAndroidバージョン用)。APIサンプルアプリ全体も、すべてのエミュレータインスタンスにプリインストールされています。

2
また、UIデザイナーも確認しました。見つけるのは簡単ではありません。とにかく、私はとにかくxmlで手作業で書くことをお勧めします。デザイナーは最近多くのことを改善しましたが、それは私の意見ではまだ使用できません。一部のオプションが制限されているだけでなく、実際のデバイスではレイアウトが完全に異なる場合があります(特に、参照されるドローアブルリソースを使用している場合。それらは正しくスケーリングされないか、私の経験ではまったく表示されません)。デバイスまたはエミュレーターでレイアウトをテストします。

1
一部の「デフォルト」色については、次の構文を使用できます:android:background = "@ android:color / white"
。android dalf

1
getResources()。getColor()は非推奨になりました。
Rohit Bandil 2016

90

上記の答えは素晴らしいです。必要に応じて、このようにプログラムで進むこともできます

まず、レイアウトにIDが必要です。+idres / layout / *。xmlに次の行を書き込んで追加します

<RelativeLayout ...
...
android:id="@+id/your_layout_id"
...
</RelativeLayout>

次に、Javaコードで次の変更を行います。

RelativeLayout rl = (RelativeLayout)findViewById(R.id.your_layout_id);
rl.setBackgroundColor(Color.RED);

これとは別に、colors.xmlで色を定義している場合は、プログラムで行うこともできます。

rl.setBackgroundColor(ContextCompat.getColor(getContext(), R.color.red));

24
動的にしたい場合は、XMLは使用できないと思います。
ギジェルモグティエレス2013

1
+1は、実行時にステータスフラグに従って変更する必要があるためです。Color.TRANSPARENT定数を使用して、元の色に戻すこともできました。
ザック

10
@ BjarkeFreund-Hansen彼は他の答えを認め、このプログラムによるソリューションを提供します。価値のある反対投票はしない。
Anubian Noob 2015

4
@ BjarkeFreund-Hansen、問題は、色を定義する方法ではなく、背景を設定する方法です。正しく読んでください。そして、もし質問がその上にあるとしたらどうでしょう。私はそれを認めて、「あなたも好きになることができる」と言った…だから彼は行くかもしれないし、しないかもしれない。また、あなたが見ることができるように、それは他の人を助けるかもしれません。あなたはできる ??
Androidキラー

7
@ BjarkeFreund-Hansenからのマイナス1を補うためにプラス1
Rahul

42

android:background="#DC143C"、またはその他のRGB値を使用できます。ここで述べように、この方法で問題なく使用できます


5
-1は、質問で「複数の場所で使用できる新しい色を定義したい」と明示的に書いたためです。色の値をハードコードしたくはなく、複数の場所で使用できるリソースとして定義したからです。
Bjarke Freund-Hansen 2013

6
@GMsoF:うまくいきますが、質問には答えません。
Bjarke Freund-Hansen 2015

21

res/values/colors.xml.

<color name="red">#ffff0000</color>
android:background="@color/red"

例は私にとってはうまくいきませんでしたが、

android:background="#(hexidecimal here without these parenthesis)"

属性として相対レイアウト要素で私のために働きました。


10
カラータグをリソースタグでラップするのを忘れましたか?
elimirks 2013

19

色をすばやく変更したい場合(および16進数を記憶していない場合)androidには、次のようにアクセスできるいくつかのプリセット色があります。

android:background="@android:color/black"

15色から選択できるので、すぐにテストでき、追加のファイルを設定する必要はありません。

values / colors.xmlファイルを設定し、上記で説明したようなまっすぐな16進数を使用しても、引き続き機能します。


4

4つの可能な方法、必要な方法を使用します。

1.コトリン

val ll = findViewById<LinearLayout>(R.id.your_layout_id)
ll.setBackgroundColor(ContextCompat.getColor(this, R.color.white))

2.データバインディング

<LinearLayout
    android:background="@{@color/white}"

またはより有用なステートメント-

<LinearLayout
    android:background="@{model.colorResId}"

3. XML

<LinearLayout
    android:background="#FFFFFF"

<LinearLayout
    android:background="@color/white"

4. Java

LinearLayout ll = (LinearLayout) findViewById(R.id.your_layout_id);
ll.setBackgroundColor(ContextCompat.getColor(this, R.color.white));

2

Androidスタジオ2.1.2(またはそれ以前)では、カラーホイールから選択できます。

Android Studioのカラーホイール

私はこれを私のレイアウトに追加することでこれを得ました:

android:background="#FFFFFF"

次に、FFFFFFの色をクリックし、表示された電球をクリックしました。


1

コトリン

linearLayout.setBackgroundColor(Color.rgb(0xf4,0x43,0x36))

または

<color name="newColor">#f44336</color>

-

linearLayout.setBackgroundColor(ContextCompat.getColor(vista.context, R.color.newColor))

0

上記の答えはすべて静的です。ダイナミックな答えを出そうと思った。同期する必要がある2つのファイルは相対的ですfoo.xmlは、レイアウトとのであり、activity_bar.javaこれは、これに対応するJavaクラスに対応しますR.layout.foo

foo.xmlレイアウト全体のIDを設定します。

<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout android:id="@+id/foo" .../>

そしてactivity_bar.javaセットで色onCreate()

public class activity_bar extends AppCompatActivty {

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.foo);

            //Set an id to the layout
        RelativeLayout currentLayout = 
                    (RelativeLayout) findViewById(R.id.foo);

        currentLayout.setBackgroundColor(Color.RED);
        ...
    }
    ...
}

これがお役に立てば幸いです。

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.