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 und ich bin in der Lage, bis hier zu erreichen
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"
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" and
Android: layout_weight = "1" `für Schaltflächen
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>