Как кнопки диалогового окна стиля темы Android Holo


Я создаю диалоговое окно на тему Holo и хочу следовать способу отображения кнопок по умолчанию для ОС. До сих пор я создал диалоговое окно, но кнопки не отображаются так, как это делается в приложениях, выполненных в Holo для ICS. Как я могу это сделать? Мой предполагаемый внешний вид-это и я могу дотянуться до этого места

3 52

3 ответа:

немного поздно, но может кто-то еще заинтересован в этом.

это работает очень хорошо для меня.

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

действие, которое загружает этот макет, нуждается в голограмме.Тема диалога.

android:theme="@android:style/Theme.Holo.Dialog"

вот что работает:

<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% распределение веса из-за сочетания 100$ размер LinearLayout by android:layout_width="match_parent" andдля Android:layout_weight="1"для кнопок

вы можете установить тему через XML Манифеста Android или внутри 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>