webentwicklung-frage-antwort-db.com.de

How to Android Holo Theme style dialog box buttons

Ich erstelle ein Dialogfeld in Holo Theme und möchte die Standardanzeige der Schaltflächen für das Betriebssystem übernehmen. Bisher habe ich das Dialogfeld erstellt, aber die Schaltflächen werden nicht so gerendert wie in den Apps, die in Holo für ICS erstellt wurden. Wie kann ich das machen? Mein beabsichtigtes Look & Feel ist No. 3rd in this image und ich bin in der Lage, bis hier zu erreichen Notice the Signup and Login buttons

52
kishu27

ein bisschen spät, aber vielleicht interessiert sich noch jemand dafür.

das funktioniert ziemlich gut für mich.

...
<!--
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>
...

die Aktivität, die dieses Layout lädt, benötigt das Holo.Dialog-Design.

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

Das funktioniert:

<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>

Die Eigenschaft style="@Android:style/Widget.Holo.Light.Button.Borderless.Small" ergibt ein flaches Erscheinungsbild und die Gewichtsverteilung von 50% ergibt sich aus der Kombination von 100 $ Größe von LinearLayout mit Android:layout_width="match_parent" andAndroid: layout_weight = "1" `für Schaltflächen

22
kishu27

Sie können das Thema über die Manifest-XML von Android) oder in der OnCreate-Funktion der Aktivität mit setTheme(Android.R.style.Theme_Holo); festlegen.

Die Größe der Schaltflächen hängt nicht vom eigentlichen Thema ab. Die Größe richtet sich nach Ihren XML-Definitionen. In dem von Ihnen gesendeten Bild scheinen die Schaltflächen das Holo-Thema erhalten zu haben, sodass hier nichts falsch ist ...

Hier ist ein XML-Layout, mit dem die Schaltflächen so gedehnt werden, dass sie die gesamte Dialogbreite ausfüllen:

<?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