1

我找不到解决方案!我正在尝试兼容 Android 2.1 及更高版本。

我尝试使用自定义主题创建与 AlertDialog 等效的内容。

我发现在 API v. 11 之前无法在 AlertDialog 上应用主题。我尝试使用 ContextThemeWrapper,但找不到自定义按钮的解决方案。

对于一个简单的视图,我使用自己的内容视图创建自己的 Dialog。我对主题做我想做的事。

但是,当我想要一个带有自定义主题和列表项的 AlertDialog 时,它就更复杂了。我找不到在列表末尾添加按钮的解决方案。因为当列表太大时,按钮在窗口之外。

我试过: - 一个相对布局:* 标题 * 标题下方的列表视图 * 列表视图下方的按钮 - 垂直线性布局

有人有想法吗?

我添加了需要的结果

也许,我的最后一个也是非常丑陋的想法是使用构建器创建一个普通的 AlertDialog,使用 findViewById 找到每个视图并应用所需的主题属性......但我必须查看自 Android 2.1 以来 id 是否为常量......

我的布局 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>
4

1 回答 1

2

我找到了解决方案。我是一个垂直的线性布局。所有视图的 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>
于 2012-08-14T10:10:47.380 回答