web-dev-qa-db-fra.com

Comment Android Boutons de la boîte de dialogue de style Holo Theme

Je crée une boîte de dialogue sur le thème Holo et je souhaite suivre la façon par défaut du système d'exploitation d'afficher les boutons. Jusqu'à présent, j'ai créé la boîte de dialogue, mais les boutons ne s'affichent pas de la même manière que dans les applications effectuées dans Holo pour ICS. Comment puis-je faire ceci? Mon look & feel est No. 3rd in this image et je peux atteindre jusqu'ici Notice the Signup and Login buttons

52
kishu27

un peu tard, mais peut-être que quelqu'un est toujours intéressé par ça.

cela fonctionne assez bien pour moi.

...
<!--
EDIT: be carefull, "?android:attr/dividerHorizontal" is only supported since API 11
      just avoid it in prior OSs.
-->
<View
    Android:layout_width="fill_parent"
    Android:layout_height="1dip"
    Android:background="?android:attr/dividerHorizontal" />
<LinearLayout 
    style="?android:attr/buttonBarStyle"
    Android:layout_width="fill_parent"
    Android:layout_height="wrap_content"
    Android:orientation="horizontal"
    Android:paddingTop="0dip"
    Android:paddingLeft="2dip"
    Android:paddingRight="2dip"
    Android:measureWithLargestChild="true">

    <Button 
        Android:id="@+id/cancel"
        style="?android:attr/buttonBarButtonStyle"
        Android:layout_width="0dip"
        Android:layout_height="wrap_content"
        Android:layout_weight="1"
        Android:text="@Android:string/cancel"/>
    <Button 
        Android:id="@+id/ok"
        style="?android:attr/buttonBarButtonStyle"
        Android:layout_width="0dip"
        Android:layout_height="wrap_content"
        Android:layout_weight="1"
        Android:text="@Android:string/ok"/>
</LinearLayout>
...

l'activité qui charge cette mise en page nécessite le thème Holo.Dialog.

Android:theme="@Android:style/Theme.Holo.Dialog"
85
SimonSays

Voici ce qui fonctionne:

<LinearLayout
    Android:id="@+id/buttonHolder"
    Android:layout_width="match_parent"
    Android:layout_height="wrap_content" 
    Android:orientation="horizontal"
    >

    <Button
        Android:id="@+id/cmdSignup"
        style="@Android:style/Widget.Holo.Light.Button.Borderless.Small"
        Android:layout_width="fill_parent"
        Android:layout_height="wrap_content"
        Android:layout_weight="1"
        Android:text="@string/Signup" />

    <Button
        Android:id="@+id/cmdLogin"
        style="@Android:style/Widget.Holo.Light.Button.Borderless.Small"
        Android:layout_width="fill_parent"
        Android:layout_height="wrap_content"
        Android:layout_weight="1"
        Android:text="@string/Login" />
</LinearLayout>

La propriété style="@Android:style/Widget.Holo.Light.Button.Borderless.Small" donne un aspect plat et la répartition du poids à 50% est due à la combinaison de 100 $ de dimensionnement de LinearLayout par Android:layout_width="match_parent" andAndroid: layout_weight = "1" `pour les boutons

22
kishu27

Vous pouvez définir le thème via le Android Manifest xml ou à l'intérieur de l'activité onCreate avec setTheme(Android.R.style.Theme_Holo);

La taille des boutons n'est pas liée au thème lui-même. La taille dépend de vos définitions xml. Dans l'image que vous avez envoyée, il semble que les boutons aient reçu le thème Holo donc il n'y a rien de mal ici ...

Voici une disposition xml qui étirera les boutons pour remplir toute la largeur de la boîte de dialogue:

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:Android="http://schemas.Android.com/apk/res/Android"
        Android:orientation="vertical"
        Android:layout_width="fill_parent"
        Android:layout_height="wrap_content"
        >
    <LinearLayout
                Android:orientation="horizontal"
                Android:layout_width="fill_parent"
                Android:layout_height="wrap_content"
                Android:layout_marginTop="5dip"
                >
                <Button
                    Android:id="@+id/okButton"
                    Android:layout_width="fill_parent"
                    Android:layout_height="wrap_content"
                    Android:layout_weight="1"
                    Android:text="OK"
                />
                <Button
                    Android:id="@+id/cancelButton"
                    Android:layout_width="fill_parent"
                    Android:layout_height="wrap_content"
                    Android:layout_weight="1"
                    Android:text="Cancel"
                />          
        </LinearLayout>
</LinearLayout>
2
Lior Iluz