我正在使用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获得类似的布局(工作正常)。