it-swarm.com.de

So legen Sie die Hintergrundfarbe einer Ansicht fest

Ich versuche, die Hintergrundfarbe einer Ansicht festzulegen (in diesem Fall eine Schaltfläche).

Ich benutze diesen Code:

// set the background to green
v.setBackgroundColor(0x0000FF00 );
v.invalidate();

Dadurch verschwindet die Schaltfläche vom Bildschirm. Was mache ich falsch und wie ändere ich die Hintergrundfarbe in einer Ansicht richtig?

Vielen Dank.

168
Peter vdL

Sie haben Ihre Schaltfläche transparent gemacht. Das erste Byte ist das Alpha.

Versuchen Sie v.setBackgroundColor(0xFF00FF00);

275
rainhut

Wenn Sie setBackgoundColor aufrufen, werden alle vorhandenen Hintergrundressourcen überschrieben/entfernt, einschließlich Rahmen, Ecken, Auffüllungen usw. Sie möchten die Farbe der vorhandenen Hintergrundressource ändern ...

View v;
v.getBackground().setColorFilter(Color.parseColor("#00ff00"), PorterDuff.Mode.DARKEN);

Experimentieren Sie mit PorterDuff.Mode. *, Um verschiedene Effekte zu erzielen.

140
EddieB

Mehrere Möglichkeiten, dies zu tun ...

Hintergrund auf Grün stellen:

v.setBackgroundColor(0x00FF00);

Hintergrund mit Alpha auf Grün setzen:

v.setBackgroundColor(0xFF00FF00);

Setze den Hintergrund mit der Color.GREEN-Konstante auf Grün:

v.setBackgroundColor(Color.GREEN);

Hintergrund in Colors.xml auf Grün setzen

<?xml version="1.0" encoding="utf-8"?>
<resources>     
    <color name="myGreen">#00FF00</color> 
    <color name="myGreenWithAlpha">#FF00FF00</color> 
</resources>

und mit:

v.setBackgroundResource(R.color.myGreen);

und:

v.setBackgroundResource(R.color.myGreenWithAlpha);

oder je länger gewickelt:

v.setBackgroundColor(ContextCompat.getColor(getContext(), R.color.myGreen));

und:

v.setBackgroundColor(ContextCompat.getColor(getContext(), R.color.myGreenWithAlpha));
116
Jorgesys

Sie können die Hex-Farbe für jede Ressource festlegen, indem Sie:

View.setBackgroundColor(Color.parseColor("#e7eecc"));
35
Vipul Patel
// set the background to green
v.setBackgroundColor(0x0000FF00 );
v.invalidate();

Der Code setzt die Schaltfläche nicht auf Grün. Stattdessen wird die Schaltfläche vollständig unsichtbar.

Erklärung: Der Hex-Wert der Farbe ist falsch. Bei einem Alpha-Wert von Null ist die Farbe unsichtbar.

Der richtige Hex-Wert ist 0xFF00FF00 für volle Deckkraft grün. Jeder Alpha-Wert zwischen 00 und FF würde Transparenz verursachen.

16
malte kosian

und wie lässt sich die Hintergrundfarbe in einer Ansicht korrekt ändern?

Ein beliebigView? Was Sie haben, ist richtig, obwohl Sie den invalidate() -Aufruf fallen lassen sollten.

Einige Views haben jedoch bereits Hintergründe. Ein Button hat beispielsweise bereits einen Hintergrund: die Fläche der Schaltfläche selbst. Dieser Hintergrund ist ein StateListDrawable, den Sie in Android-2.1/data/res/drawable/btn_default.xml In Ihrer Android= SDK-Installation finden. Dies bezieht sich wiederum auf eine Reihe von Neun-Patches Bitmap-Bilder, die in mehreren Dichten verfügbar sind. Sie müssen all dies klonen und modifizieren, um Ihre grünen Ziele zu erreichen.

Kurz gesagt, es ist besser, ein anderes UI-Muster zu finden, als den Hintergrund eines Button zu ändern.

12
CommonsWare

versuche hinzuzufügen:

setBackgroundColor(Color.parseColor("#FF0000"));
11
Long Rainbow

Um die erste Farbe festzulegen, die auf dem Bildschirm angezeigt werden soll, können Sie diese auch in der entsprechenden layout.xml-Datei (besseres Design) vornehmen, indem Sie diese Eigenschaft zur entsprechenden Ansicht hinzufügen:

Android:background="#FF00FF00"
11
JustinB

Ich benutze bei API min 16, Ziel 23

Button WeekDoneButton = (Button) viewWeeklyTimetable.findViewById(R.id.week_done_button);

WeekDoneButton.setBackgroundColor(ContextCompat.getColor(getActivity(), R.color.colorAccent));
6
Vostro

Sie können einfach verwenden:

view.setBackgroundColor(Color.parseColor("#FFFFFF"));
5

In diesem Frage wird die Hintergrundfarbe einer Ansicht geändert. In einer der Antworten erklärt die Person, wie die Hintergrundfarbe zur Laufzeit geändert wird. Natürlich werden Sie prüfen, wie Sie andere Objekte auf dem Bildschirm ändern können. Dies sollte Ihnen jedoch einen guten Einstieg ermöglichen, indem Sie zumindest die Hintergrundfarbe der Ansicht beim Klicken auf eine Schaltfläche ändern können.

4
jbranchaud
mButton.setBackgroundColor(getResources().getColor(R.color.myColor));
4

Beginnen Sie mit Android 6 verwenden Sie ContextCompat

        view.setBackgroundColor( ContextCompat.getColor(this, R.color.your_color));
3
Raluca Lucaci

Sie können einfach verwenden:

view.setBackgroundColor(Color.rgb(0, 198, 255));
view.setBackgroundColor(R.color.primaryColor);

Fügt dem vorherigen Farbwert Farbe hinzu, sodass ich eine andere Farbe habe.

Was für mich funktioniert ist:

view.setBackgroundResource(R.color.primaryColor);
0
meralon

Nehmen wir an, wir haben ein Primärfarbe in values=>colors.xml Als:

<resources>
    <color name="primary">#FDD835</color>
</resources>

wenn wir also unsere benutzerdefinierte Farbe in setBackgroundColor(@ColorInt int Color) verwenden möchten, brauchen wir nur eine Anmerkung @SuppressLint("ResourceAsColor") mit Konstruktor/Methode, die verwendet wird als:

    @SuppressLint("ResourceAsColor")
    public _LinearLayout(Context context) {
        super(context);

        // Formatting our layout : )
        super.setBackgroundColor(R.color.primary);

        ....


    }
0
ForWebTech