3 Stimmen

Android wendet ein Thema auf ein benutzerdefiniertes Element an

Ich kann ein Thema und ein bestimmtes Schaltflächendesign angeben:

<style name="MyTheme" parent="android:style/Theme.Black">
  <item name="android:buttonStyle">@style/Button.b1</item>
</style>

<style name="Button.b1" parent="android:style/Widget.Button">
    <item name="android:textColor">#000000</item>
</style>

Das Problem ist, dass dieser Stil auf alle Schaltflächen angewendet wird. Ich würde gerne eine bestimmte Schaltfläche mit einem eigenen Stil deklarieren, der jedes Thema unabhängig von den anderen Schaltflächen ändert (so etwas wie eine "Speichern"-Schaltfläche). Irgendeine Idee?


Ich habe Folgendes versucht:

<style name="Button.MyButton" parent="android:style/Widget.Button">
  <item name="android:background">@drawable/shape</item>
</style>

 <style name ="Button.MyButton.Theme1">
     <item name="android:textColor">#000000</item>
  </style>

 <style name ="Button.MyButton.Theme2">
     <item name="android:textColor">#FFFFFF</item>
  </style>

 <Button
     android:id="@+id/save_button" 
     android:layout_width="0px" 
     style="@style/Button.MyButton"
     android:layout_weight="1"
     android:layout_height="wrap_content"
     android:text="@string/save"/>

Jetzt ist die Schaltfläche unabhängig vom Thema, aber sie sollte auch das Stilattribut anwenden, das ich oben angegeben habe. Im Moment wendet sie nur die Attribute an, die im Bereich MyButton deklariert sind und nicht die in MyButton.Theme1 oder MyButton.Theme2.

3voto

Adinia Punkte 3660

Wenn Ihr Thema MyTheme nur zum Definieren des Schaltflächenstils verwendet wird, entfernen Sie es; entfernen Sie auch die parent Eigenschaft der Schaltfläche:

<style name="Button.b1">
    <item name="android:textColor">#000000</item>
</style>

Verwenden Sie dann im Layout den Stil nur für die Schaltflächen, die Sie benötigen, wie unten:

 <Button
         android:id="@+id/btn_custom"
         style="@style/Button.b1"
         android:layout_width="wrap_content"
         android:layout_height="wrap_content" >
 </Button>

1voto

a.bertucci Punkte 12112

Sie können entfernen MyTheme Erklärung von Ihrem styles.xml und einfach einstellen @style/Button.b1 en el android:style Eigenschaft der Schaltfläche Ihrer Wahl :)

edit: Ich glaube, ich habe endlich verstanden, wonach Sie gefragt haben. Ich habe es nicht selbst ausprobiert, aber es sollte funktionieren:

<!-- Declare your themes here -->
<style name="Theme1" parent="android:style/Theme.Black"></style>
<style name="Theme2" parent="android:style/Theme.Black"></style>

<!-- Declare your "abstract" Button style -->
<style name="MyButton" parent="android:style/Widget.Button">
  <item name="android:background">@drawable/shape</item>
</style>

<!-- Override MyButton style for Theme1 -->
<style name ="Theme1.MyButton" parent="@style/MyButton">
  <item name="android:textColor">#000000</item>
</style>

<!-- Override MyButton style for Theme2 -->
<style name ="Theme2.MyButton" parent="@style/MyButton">
  <item name="android:textColor">#FFFFFF</item>
</style>

0voto

devmiles.com Punkte 9694

Sie sollten Ihre Button.b1 Stil nur für die Schaltflächen, die auf diese Weise gestaltet werden sollen. Verwenden Sie für diese Schaltflächen die android:style Eigentum:

android:style="Button.b1"

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X