我有一个xml,其根目录为GridLayout
,我希望它显示在AlertDialog
内。
这是我在片段onResume()
中使用的代码:
AlertDialog.Builder builder = new AlertDialog.Builder(getActivity());
LayoutInflater inflater = getActivity().getLayoutInflater();
final View addViewImg = inflater.inflate(R.layout.matrix_image, null);
builder.setView(addViewImg);
AlertDialog alertDialog = builder.create();
Window window = alertDialog.getWindow();
//I tried with "setLayout" but it doesn't work
window.setLayout(ViewGroup.LayoutParams.WRAP_CONTENT, ViewGroup.LayoutParams.WRAP_CONTENT);
alertDialog.show();
在这里:matrix_image.xml
<?xml version="1.0" encoding="utf-8"?>
<GridLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
android:id="@+id/matrixLayout"
android:layout_width="wrap_content"
android:layout_height="wrap_content">
<ImageButton
android:id="@+id/imageUpLeft"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
app:srcCompat="@android:drawable/sym_def_app_icon" />
<!-- Other 8 ImageButtons composing a 3x3 grid --/>
</GridLayout>
问题在于View
并非位于AlertDialog
内部,而AlertDialog
周围的GridLayout
没有。
如何摆脱右边的空格并围绕GridLayout 包裹AlertDialog?
注意:我尝试了在stackoverflow上提出的几个选项,但它们都不适用于我。也许GridLayout的行为有所不同?
答案 0 :(得分:1)
我不确定它是否适合您,但您可以使用支持库中的GridLayout
。然后,有这样的布局:
<android.support.v7.widget.GridLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
android:id="@+id/matrixLayout"
android:layout_width="match_parent"
android:layout_height="wrap_content"
app:columnCount="3"
app:rowCount="3">
<ImageButton
android:layout_width="wrap_content"
android:layout_height="wrap_content"
app:layout_columnWeight="1"
app:srcCompat="@android:drawable/sym_def_app_icon" />
<ImageButton
android:layout_width="wrap_content"
android:layout_height="wrap_content"
app:layout_columnWeight="1"
app:srcCompat="@android:drawable/sym_def_app_icon" />
<ImageButton
android:layout_width="wrap_content"
android:layout_height="wrap_content"
app:layout_columnWeight="1"
app:srcCompat="@android:drawable/sym_def_app_icon" />
<ImageButton
android:layout_width="wrap_content"
android:layout_height="wrap_content"
app:layout_columnWeight="1"
app:srcCompat="@android:drawable/sym_def_app_icon" />
<ImageButton
android:layout_width="wrap_content"
android:layout_height="wrap_content"
app:layout_columnWeight="1"
app:srcCompat="@android:drawable/sym_def_app_icon" />
<ImageButton
android:layout_width="wrap_content"
android:layout_height="wrap_content"
app:layout_columnWeight="1"
app:srcCompat="@android:drawable/sym_def_app_icon" />
<ImageButton
android:layout_width="wrap_content"
android:layout_height="wrap_content"
app:layout_columnWeight="1"
app:srcCompat="@android:drawable/sym_def_app_icon" />
<ImageButton
android:layout_width="wrap_content"
android:layout_height="wrap_content"
app:layout_columnWeight="1"
app:srcCompat="@android:drawable/sym_def_app_icon" />
<ImageButton
android:layout_width="wrap_content"
android:layout_height="wrap_content"
app:layout_columnWeight="1"
app:srcCompat="@android:drawable/sym_def_app_icon" />
</android.support.v7.widget.GridLayout>
你会得到这样的结果:
答案 1 :(得分:0)
您可以使用'DialogFragment'而不是'AlertDialog'。它让您可以更自由地进行自定义。您可以在此处找到有关它的教程:https://android-developers.googleblog.com/2012/05/using-dialogfragments.html