2013-09-01 4 views
12

Ich versuche, einen benutzerdefinierten Multiple-Choice-Alarmdialog zu erstellen, der es dem Benutzer ermöglicht, alle Elemente mit einem Klick auszuwählen/abzuwählen. Ich erreiche dies mit einem benutzerdefinierten Titel mit einem zusätzlichen Kontrollkästchen. Alles funktioniert einwandfrei, außer dass ich nicht weiß, wie ich meinen benutzerdefinierten Titel wie den standardmäßigen Alarmdialogtitel aussehen lasse (mit demselben Stil).Android: Verwenden des Standardstils in einem benutzerdefinierten Dialogfeldtitel

Hier ist, was ich versuche zu tun (Das Beispiel verwendet das Thema in der Dialogs documentation. Das ist nur ein Beispiel, was ich wirklich versuche zu haben ist das Anwendungsthema).

enter image description here

Ich habe eine benutzerdefinierte Ansicht für den benutzerdefinierten Titel, den ich verwenden, aber ich weiß nicht, wie die Attribute der Standardstil Titelleiste zu erhalten, also, ich erhalte:

enter image description here

(No blaue Balken unter dem Titel und falsche Titel Farbe)

Hier ist das Layout meines eigenen Titels:

<?xml version="1.0" encoding="utf-8"?> 
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" 
android:layout_width="fill_parent" 
android:layout_height="fill_parent" > 

<TextView 
    android:id="@+id/title" 
    style="?android:attr/textAppearanceLarge" 
    android:layout_width="0dp" 
    android:layout_height="wrap_content" 
    android:layout_weight="1" 
    android:text="Dialog title" /> 

<TextView 
    android:id="@+id/all" 
    android:layout_width="wrap_content" 
    android:layout_height="wrap_content" 
    android:text="All" /> 

<CheckBox 
    android:id="@+id/checkBox" 
    android:layout_width="wrap_content" 
    android:layout_height="wrap_content" /> 
</LinearLayout> 

Es scheint für mich offensichtlich, dass ich die Titelattribute definieren muss, und den Hintergrund des Layouts ... aber ich bin das Crawlen im Internet seit Stunden suchen, wie Sie die Attribute der Standardtitelansicht erhalten.

Irgendeine Idee?

+0

Die Farbe ist einfach. Setzen Sie die Textfarbe auf die bereitgestellte blaue Holo-Farbe. – ChiefTwoPencils

+0

Vielen Dank, aber ich möchte, dass mein Titel das Standardthema der Anwendung für Dialogtitel hat. Wenn das Anwendungsthema nicht Holo ist, funktioniert das nicht. –

Antwort

10

sehen, ob dies ist, was Sie suchen:

<?xml version="1.0" encoding="utf-8"?> 
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" 
    android:layout_width="fill_parent" 
    android:layout_height="fill_parent" 
    android:orientation="vertical" > 


    <LinearLayout 
     android:layout_width="fill_parent" 
     android:layout_height="wrap_content" 
     android:orientation="horizontal" > 

     <TextView 
      android:id="@+id/title" 
      android:layout_width="0dp" 
      android:layout_height="wrap_content" 
      android:layout_weight="1" 
      android:textSize="22sp" 
      android:textColor="#ff33b5e5" 
      android:text="Dialog title" /> 

     <TextView 
      android:id="@+id/all" 
      android:layout_width="wrap_content" 
      android:layout_height="wrap_content" 
      android:text="All" /> 

     <CheckBox 
      android:id="@+id/checkBox" 
      android:layout_width="wrap_content" 
      android:layout_height="wrap_content" /> 

    </LinearLayout> 

    <View android:id="@+id/titleDivider" 
     android:layout_width="match_parent" 
     android:layout_height="2dip" 
     android:background="#ff33b5e5" /> 

</LinearLayout> 

Wie ich diese bekam:

Wechseln Sie zu dem sdk Verzeichnis auf der Festplatte> Plattformen> Android-XX (17, beispielsweise)> Daten> res> Layout> dialog_title_holo.xml. Sehen Sie sich die Ansicht mit der ID titleDivider an. Es ist Hintergrundattribut: background="@android:color/holo_blue_light". Schlagen Sie den Wert dieser Farbe in res/values/colors.xml nach.

Von styles_device_defaults.xml:

<style name="TextAppearance.DeviceDefault.DialogWindowTitle" parent="TextAppearance.Holo.DialogWindowTitle" > 

Mit Blick auf styles.xml:

<style name="TextAppearance.Holo.DialogWindowTitle"> 
    <item name="android:textSize">22sp</item> 
    <item name="android:textColor">@android:color/holo_blue_light</item> 
</style> 

Die textColor die gleiche wie die Linienfarbe ist. Die Textgröße wird als 22sp angegeben. Und wird style="?android:attr/textAppearanceLarge" nicht erforderlich, da wir die setzen textSize="22sp":

<style name="TextAppearance.Large"> 
    <item name="android:textSize">22sp</item> 
</style> 
+0

Vielen Dank für Ihre Recherche, aber ich bin nicht auf der Suche nach der Farbe ist der Titel in Holo Thema. Ich versuche ein generisches Widget zu erstellen, das sich an das aktuelle Thema der Anwendung anpasst. Dennoch scheint mir Android-Quellcode eine sehr gute Idee zu sein. Ich werde ermitteln. –

+3

@ Jean-MarcAstesana Tut mir leid, wenn ich Ihnen den Eindruck gegeben habe "schau, ich habe die Farbe gefunden, die du suchst". Ich dachte, ich würde dir sagen, wo ich suchen soll. Wenn Sie zum Beispiel 'dialog_title_holo.xml' betrachten (was eine Layoutdatei ist), erhalten Sie einige Hinweise, wie android die Ansicht erreicht, die Sie im Standarddialog sehen. Die 'blaue Linie' ist genau so definiert wie oben, nur dass die Eigenschaft' android: background = "# ff33b5e5" 'android: background =" @ android: color/holo_blue_light "' ist. – Vikram

+0

@ user255882 Ok, ich denke (hoffe) ich verstehe. Ich habe Android-18 betrachtet, und es scheint anders zu sein. Also, ich verstehe, dass es keine magische Stil-ID für das gesamte Titellayout gibt, die auf die Titelkomponente angewendet werden kann, damit die Anwendung aussieht und sich anfühlt. Das beste, was ich tun kann, ist die Verwendung von style = "@ android: style/TextAppearance.DeviceDefault.DialogWindowTitle" für das Titelfeld (auf Geräten nach API14, bevor dieser Stil nicht existiert). Ist es nicht? –

0

Wenn Sie nur das Gerät standardmäßig verwenden möchten, ohne dass etwas anpassen oder zu erweitern, können Sie einfach hinzufügen:

android:textAppearance="@android:style/TextAppearance.DeviceDefault.DialogWindowTitle" 

zur Titelansicht in Ihrem XML-Layout. Dies zeigt einen anderen Stil basierend auf dem Gerätethema.

Wenn Sie IMMER das blaue (Holo Theme) Titel, unabhängig von den Gerätestandards zeigen möchten, dann können Sie hinzufügen:

android:textAppearance="@android:style/TextAppearance.Holo.DialogWindowTitle" 

statt.

Verwandte Themen