我找不到解决方案!我正在努力遵守Android 2.1及更高版本。
我尝试使用自定义主题创建AlertDialog的等效项。
我发现在API v.11之前无法在AlertDialog上应用主题。我尝试使用ContextThemeWrapper,但我找不到自定义按钮的解决方案。
对于一个简单的视图,我使用自己的内容视图创建自己的Dialog。我用主题做我想做的事。
但是,当我想要一个带有自定义主题和列表项的AlertDialog时,它会更复杂。我找不到在列表末尾添加按钮的解决方案。因为当列表太大时,按钮就在窗口之外。
我尝试过: - 一个RelativeLayout: *标题 * ListView下面的标题 * ListView下方的按钮 - LinearLayout垂直
有人有想法吗?
我添加result needed。
也许,我的最后一个也是非常难看的想法是用构建器创建一个普通的AlertDialog,用findViewById找到每个视图并应用所需的主题属性......但是我必须看看自从Android 2.1以来它们是不变的...
我的布局xml:
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:bw="http://schemas.android.com/apk/res-auto/com.levelup.beautifulwidgets"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:orientation="vertical" >
<TextView
android:id="@+id/title"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:layout_alignParentTop="true"
android:layout_marginBottom="8dp"
android:layout_marginLeft="10dp"
android:layout_marginRight="10dp"
android:background="@drawable/ab_background"
android:paddingBottom="8dp"
android:paddingTop="8dp"
android:textColor="@color/grey_1"
android:textSize="24dp" />
<FrameLayout
android:id="@+id/title_container"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_alignParentRight="true"
android:layout_alignParentTop="true"
android:layout_marginTop="5dp"
android:paddingRight="10dp" />
<ListView
android:id="@+id/container"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:layout_below="@id/title" />
<LinearLayout
android:id="@+id/buttons"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:layout_alignParentLeft="true"
android:layout_alignParentRight="true"
android:layout_below="@id/container"
android:layout_marginTop="5dp"
android:orientation="horizontal" >
<Button
android:id="@+id/cancel_button"
style="@style/DialogButton"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:layout_marginLeft="-1dp"
android:layout_weight="1"
android:text="@string/cancel" />
<Button
android:id="@+id/ok_button"
style="@style/DialogButton"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:layout_weight="1"
android:text="@string/ok" />
</LinearLayout>
</RelativeLayout>
答案 0 :(得分:2)
我找到了解决方案。我是一个垂直的LinearLayout。所有视图的layout_weight都为0.只需ListView为1。
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:orientation="vertical" >
<RelativeLayout
android:id="@+id/titleLayout"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:layout_weight="0"
android:padding="5dp" >
<FrameLayout
android:id="@+id/title_container"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_alignParentRight="true"
android:layout_centerVertical="true"
android:paddingRight="10dp" />
<TextView
android:id="@+id/title"
style="@style/Dialog.Title"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_alignParentLeft="true"
android:layout_centerVertical="true"
android:layout_marginLeft="10dp"
android:layout_marginRight="10dp"
android:layout_toLeftOf="@id/title_container" />
</RelativeLayout>
<RelativeLayout
android:id="@+id/containerLayout"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:layout_weight="1" >
<FrameLayout
android:id="@+id/container"
android:layout_width="fill_parent"
android:layout_height="wrap_content" />
<ImageView
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:layout_alignParentTop="true"
android:layout_marginLeft="5dp"
android:layout_marginRight="5dp"
android:background="@drawable/dialog_header_divider" />
</RelativeLayout>
<View
android:layout_width="fill_parent"
android:layout_height="1dp"
android:layout_weight="0"
android:background="@color/grey_2" />
<LinearLayout
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:layout_weight="0"
android:orientation="horizontal" >
<Button
android:id="@+id/cancel_button"
style="@style/Dialog.Button.Cancel"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:layout_marginLeft="-1dp"
android:layout_weight="1"
android:text="@string/cancel" />
<View
android:id="@+id/buttonSeparator"
android:layout_width="1dp"
android:layout_height="fill_parent"
android:layout_weight="0"
android:background="@color/grey_2" />
<Button
android:id="@+id/ok_button"
style="@style/Dialog.Button.Ok"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:layout_weight="1"
android:text="@string/ok" />
</LinearLayout>
</LinearLayout>