在android.support.v7.app.AlertDialog中的TableLayout

时间:2015-05-07 09:38:31

标签: android android-layout android-support-library android-dialog android-tablelayout

我正在使用v7支持库22.1.1创建一些AlertDialog(因为我也想支持Android 2.3):

import android.support.v7.app.AlertDialog;
//import android.app.AlertDialog;

LayoutInflater inflater = (LayoutInflater) parent.getSystemService( Context.LAYOUT_INFLATER_SERVICE );
View messageView = inflater.inflate(R.layout.dialog_dialog1, null, false);

AlertDialog.Builder builder = new AlertDialog.Builder(parent);

builder.setIcon(R.drawable.ic_action_important);
builder.setTitle(parent.getString(R.string.action_action1));
builder.setView(messageView);

feedbackMessageDialog = builder.create();
builder.show();

对于大多数对话框来说,一切都很好。但是,尽管它具有wrap_content值且内容仅填充屏幕的一半,但显示的高度几乎与整个屏幕的特定对话框一样。

我在活动中使用的主题是Theme.AppCompat.NoActionBar和Theme.AppCompat。这两个主题都在发生这个问题。

如果我使用标准AlertDialog(android.app.AlertDialog)而不是支持库中的那个,则会正确呈现对话框。

与支持库工作良好的对话框的主要区别在于,这个使用TableLayout:

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    android:orientation="vertical"
    android:padding="20dip"
    android:scrollbars="vertical"
    android:background="@android:color/transparent"
    android:scrollbarAlwaysDrawVerticalTrack="true">

    <TextView
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:textAppearance="?android:attr/textAppearanceMedium"
        android:text="@string/text_main"
        android:id="@+id/textView"
        android:layout_gravity="center_horizontal"
        android:gravity="center"
        android:columnCount="2"
        android:textColor="@android:color/primary_text_dark" />

    <TableLayout
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:layout_gravity="center_horizontal"
        android:gravity="center">

        <TableRow android:gravity="center"
            android:background="@drawable/background_material_dark_button"
            android:layout_marginTop="20dp"
            android:clickable="true"
            android:focusable="true"
            android:onClick="doAction1">

            <ImageButton
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:id="@+id/imageButtonPositive"
                android:background="@drawable/ic_action_1"
                android:contentDescription="@string/desctext1"
                android:layout_gravity="center"
                android:minHeight="64dp"
                android:minWidth="64dp" />

            <TextView
                android:layout_width="0dp"
                android:layout_height="wrap_content"
                android:textAppearance="?android:attr/textAppearanceMedium"
                android:text="@string/feedback_good_text"
                android:id="@+id/textView2"
                android:gravity="center_vertical"
                android:layout_gravity="center_vertical"
                android:layout_weight="1" />
        </TableRow>

        <TableRow android:gravity="center"
            android:layout_marginTop="20dp"
            android:clickable="true"
            android:focusable="true"
            android:onClick="doAction2"
            android:background="@drawable/background_material_dark_button">

            <ImageButton
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:id="@+id/imageButtonNegative"
                android:background="@drawable/ic_action_2"
                android:contentDescription="@string/desctext2"
                android:baselineAlignBottom="false"
                android:minHeight="64dp"
                android:minWidth="64dp"
                android:layout_gravity="center" />

            <TextView
                android:layout_width="0dp"
                android:layout_height="wrap_content"
                android:textAppearance="?android:attr/textAppearanceMedium"
                android:text="@string/feedback_bad_text"
                android:id="@+id/textView3"
                android:gravity="center_vertical"
                android:layout_gravity="center_vertical"
                android:autoText="false"
                android:elegantTextHeight="false"
                android:layout_weight="1" />
        </TableRow>

    </TableLayout>
</LinearLayout>

这似乎是支持库中的一个错误,我已在相应的跟踪器中登录:http://code.google.com/p/android/issues/detail?id=172279

我的布局定义中是否存在触发问题的内容,或者是否有办法解决此问题?

有可能只使用LinearLayout获得类似的布局(工作正常)。

0 个答案:

没有答案