web-dev-qa-db-ja.com

方法Androidホロテーマスタイルのダイアログボックスのボタン

Holoテーマでダイアログボックスを作成していますが、OSのデフォルトのボタン表示方法に従ってください。これまで、ダイアログボックスを作成しましたが、Holo for ICSで実行されるアプリのようにボタンがレンダリングされません。これどうやってするの?私の意図した外観は No. 3rd in this image そしてここまで到達できます Notice the Signup and Login buttons

52
kishu27

少し遅れますが、誰かがまだそれに興味を持っているかもしれません。

これは私にとってはかなりうまくいきます。

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

このレイアウトをロードするアクティビティには、Holo.Dialogテーマが必要です。

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

これが機能するものです:

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

プロパティstyle="@Android:style/Widget.Holo.Light.Button.Borderless.Small"はフラットな外観を与え、50%の重量配分は、ボタンのAndroid:layout_width="match_parent" andAndroid:layout_weight = "1" `によるLinearLayoutの100 $サイズ変更を組み合わせたためです。

22
kishu27

テーマは、Android Manifest xml)またはアクティビティのonCreate内でsetTheme(Android.R.style.Theme_Holo);を使用して設定できます

ボタンのサイズはテーマ自体とは関係ありません。サイズは、XML定義次第です。あなたが送った画像では、ボタンがHoloテーマを受け取ったようですので、ここで何も問題はありません...

以下は、ダイアログの幅全体にボタンを引き伸ばすxmlレイアウトです。

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