web-dev-qa-db-ja.com

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

私は、やや活動のデザインをクローン化しようとしています Android UIデザインの一連のスライドから 。しかし、私は非常に簡単な作業で問題を抱えています。

画像に示すようにレイアウトを作成しました。ヘッダーはTextView内のRelativeLayoutです。今私はRelativeLayoutの背景色を変えたいのですが、どうやってそれを理解することができないようです。

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

それに加えて、私は欠けているに違いないというEclipse Android UIデザイナーの中からこれを行うための非常に単純な方法があると期待しますか?

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

Android activity design

181

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

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

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

背景として drawable resource を使うこともできます。これにはAndroid:background="@drawable/mydrawable"を使います(つまり9patchドロアブル、通常のビットマップ、シェイプドロアブルなど)。

266
user658042

上記の答えはいいです。必要に応じてプログラムでこのようにすることもできます。

まず、レイアウトにはIDが必要です。次の+id行をres/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));
86
Android Killer

あなたの色にはAndroid:background="#DC143C"や他の _ rgb _ の値を使うことができます。述べたように、私はそれをこの方法で使っても問題ない ここ

37
yjw

res/values/colors.xml.

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

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

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

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

21
user2585548

色をすばやく変更したい場合(および16進数を記憶させていない場合)、Androidにはプリセット色がいくつか用意されています。

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

15色ありますので、すぐに試してみることができ、追加のファイルを設定する必要はありません。

Values/colors.xmlファイルを設定し、上で説明したようにストレートの16進数を使用してもまだうまくいきます。

16
kgibilterra

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

Color Wheel in Android Studio

私は私のレイアウトに以下を追加することによってこれを得ました:

Android:background="#FFFFFF"

それから私はFFFFFF色をクリックして、現れた電球をクリックしました。

2
Shygar

4つの可能な方法は、あなたが必要とするものを使います。

コトリン

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

データバインディング

<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));
1
Khemraj

コトリン

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

または

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

-

linearLayout.setBackgroundColor(ContextCompat.getColor(Vista.context, R.color.newColor))
1
Bemtorres

とりわけ答えは静的です。私は動的な答えを出すと思いました。同期する必要がある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.JavaonCreate()の色を設定します。

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);
        ...
    }
    ...
}

これが役に立つことを願っています。

0
T.Woody