2017-01-10 14 views
0

In der realen Welt, das Beispiel Control Panel Layout (unten) erscheint in einem eigenen FrameLayout (Fragment Container) und (abhängig davon, ob die App auf einem Tablet läuft) neben einer Karte, deren Farben von einem Colorpicker gefeuert von eingestellt werden die "Farbe" -Schaltflächen. (Hinweis: Die Karte und das Bedienfeld haben unterschiedliche Hintergründe.)Eltern ignorieren Hintergrund anzeigen?

Bei der Rückkehr vom Colorpicker werden der zugehörige Kartenpartikel und der Buttonhintergrund mit der neuen Farbe aktualisiert.

Die Idee ist, dass (wie vom Benutzer beobachtet) die Farbe der Schaltfläche genau mit der Karte übereinstimmt.

Und natürlich nicht! (Es sei denn, die ausgewählte Farbe hat 255-Alpha).

Ich weiß, dass dies "erwartetes Verhalten" ist, aber gibt es einen cleveren (oder 'hacky') Trick, der den Elternhintergrund auslöschen wird (nur hinter dem Button child), damit die Hintergrundfarbe des Kindes korrekt wiedergegeben wird?

Beispiel Bedienfeld Layout und Code

<LinearLayout android:id="@+id/settingsLL" 
    android:orientation="vertical"> 
    <LinearLayout android:id="@+id/oneOfMany" 
     android:orientation="horizontal"> 
     <TextView style="@style/wptedit_title" android:text="[some title]" /> 
     <Button style="@style/wptedit_color" android:id="@+id/colorBtn" /> 
    </LinearLayout> 
</LinearLayout> 

// Control panel background 
settingsLL.setBackgroundColor(0xFFD5FFDD);  
// Faint red tint gives desired map background not reflected by button 
colorBtn.setBackgroundColor(0x04FF0000);   

Antwort

1

Eine bessere Frage wäre gewesen:

Wie kombiniere ich die Alpha-255 Hintergrundfarbe der Karte mit jeder anderen Farbe einen neuen zu produzieren Alpha-255-Farbe, die dann auf die Steuerfeld-Taste angewendet werden kann, so dass das Erscheinungsbild der Steuerfeld-Taste perfekt mit der Karte übereinstimmt, unabhängig vom Hintergrund des Bedienfeldes?

So weit, so gut! (Siehe android.support.v4.graphics.ColorUtils)

colorBtn.setBackgroundColor(ColorUtils.compositeColors(pickedColor, mapBackgroundColor); 

here für die doco See. Die Quelle war nicht in meinem SDK. Ich musste es bekommen here.

Verwandte Themen