wake-up-neo.net

Hintergrundfarbe des Android-Layoutelements festlegen

Ich versuche, etwas das Design einer Aktivität zu klonen aus einer Reihe von Folien auf Android UI-Design . Ich habe jedoch ein Problem mit einer sehr einfachen Aufgabe.

Ich habe das Layout so erstellt, wie es im Bild gezeigt ist, und der Header ist TextView in einem RelativeLayout. Nun möchte ich die Hintergrundfarbe der RelativeLayout ändern, jedoch scheint mir nicht klar zu sein, wie.

Ich weiß, dass ich die Android:background-Eigenschaft im RelativeLayout-Tag in der XML-Datei festlegen kann. Aber was muss ich festlegen? Ich möchte eine neue Farbe definieren, die ich an mehreren Stellen verwenden kann. Ist es eine drawable oder eine string?

Außerdem würde ich davon ausgehen, dass es vom Eclipse Android UI-Designer aus einen sehr einfachen Weg gibt, den ich vermissen muss?

Ich bin derzeit etwas frustriert, da dies eine Tätigkeit sein sollte, die mit wenigen Klicks maximal ausgeführt wird. Jede Hilfe wird sehr geschätzt. :)

Android activity design

178

Sie können einfache Farbressourcen verwenden, die normalerweise in res/values/colors.xml angegeben werden.

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

und verwenden Sie diese über Android:background="@color/red". Diese Farbe kann auch an anderer Stelle verwendet werden, z. als Textfarbe. Verweisen Sie es in XML auf dieselbe Weise, oder rufen Sie es mit getResources().getColor(R.color.red) im Code auf.

Sie können auch eine beliebige drawable-Ressource als Hintergrund verwenden. Verwenden Sie hierfür Android:background="@drawable/mydrawable" (dh 9patch-Drawables, normale Bitmaps, Shape-Drawables usw.).

264
user658042

Die obigen Antworten sind Nizza. Sie können auch programmgesteuert vorgehen, wenn Sie möchten

Zunächst sollte Ihr Layout eine ID haben. Fügen Sie es hinzu, indem Sie die folgende +id-Zeile in res/layout/*. Xml schreiben

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

Nehmen Sie dann in Ihrem Java-Code die folgenden Änderungen vor.

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

abgesehen davon, wenn Sie die Farbe in colors.xml definiert haben, können Sie dies auch programmgesteuert tun:

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

Sie können Android:background="#DC143C" oder beliebige andere RGB -Werte für Ihre Farbe verwenden. Ich habe kein Problem damit zu benutzen, wie gesagt hier

37
yjw

Das

res/values/colors.xml.

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

beispiel hat für mich nicht funktioniert, aber die

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

arbeitete für mich im relativen Layoutelement als Attribut.

21
user2585548

Wenn Sie eine Farbe schnell ändern möchten (und keine Hex-Nummern gespeichert haben), verfügt Android über einige voreingestellte Farben, auf die Sie wie folgt zugreifen können:

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

Es gibt 15 Farben, aus denen Sie wählen können. Mit Nice können Sie die Dinge schnell testen, und Sie müssen keine zusätzlichen Dateien einrichten.

Das Einrichten einer values ​​/ colors.xml-Datei und die Verwendung des geraden Hexs wie oben beschrieben funktioniert weiterhin.

16
kgibilterra

In Android Studio 2.1.2 (oder möglicherweise früher) können Sie aus einem Farbrad auswählen:

 Color Wheel in Android Studio

Ich habe dies erhalten, indem ich folgendes zu meinem Layout hinzugefügt habe:

Android:background="#FFFFFF"

Dann habe ich auf die FFFFFF-Farbe geklickt und auf die erscheinende Glühbirne geklickt.

2
Shygar

Kotlin

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

oder

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

-

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

4 Möglichkeiten, verwenden Sie eine, die Sie brauchen.

1. Kotlin

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

2. Datenbindung

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

ODERnützlichere Aussage-

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

Die Antworten sind vor allem statisch. Ich dachte, ich würde eine dynamische Antwort geben. Die beiden Dateien, die synchron sein müssen, sind der relative foo.xml mit dem Layout und activity_bar.Java, der der Java-Klasse entspricht, die diesem R.layout.foo entspricht.

In foo.xml legen Sie eine ID für das gesamte Layout fest:

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

Und in activity_bar.Java die Farbe in onCreate() einstellen:

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

Ich hoffe das hilft.

0
T.Woody