6

语境

一个非常简单的任务,我想设置AlertDialog包含自定义视图的高度。经过十几个关于这个主题的 SO 问题,我想出了 12 个!可能的答案。在尝试了所有这些之后(每秒尝试 15 年),似乎将我的头撞在屏幕上具有相同的效果:没有。我想这样做的原因是我的自定义视图没有内部维度,它只是跨越了给定的空间。


目标

这里的问题是指软目标,但我很乐意接受硬目标的答案!

软目标: 创建一个AlertDialog具有自定义空ViewGroup(或包含,比如说,一个ImageView),并将对话框的宽度和高度设置为特定值。

硬目标:当对话框的尺寸以编程方式给出时,创建一个尽可能占据最大空间的AlertDialog显示正方形。


我的尝试,浓缩

爪哇:

View layout = getLayoutInflater ().inflate (R.layout.alerttest, null);

AlertDialog alert = new AlertDialog.Builder (this)
    .setPositiveButton(R.string.alert_dialog_ok, null)
    .setTitle ("Don't cry, will you?")
    // .setView (layout) may be done here.
    .create();

alert.show ();

// alert.setView (layout) here, or before .show, or I can use the doc's:

FrameLayout fl = (FrameLayout) alert.findViewById (android.R.id.custom);
fl.addView (layout, new LayoutParams (500, 500)); // Arbitrary dimensions

alert.getWindow ().setLayout (800, 600);
// Or use before show (), or use alert.getWindow ().setAttributes with
// a WindowManager.LayoutParams crafted from getWindow ().getAttributes.
// Tried before and after show.

警报测试.xml:

<?xml version="1.0" encoding="utf-8"?>
<!-- Tried with and without the encapsulating FrameLayout. -->
<FrameLayout
        xmlns:android="http://schemas.android.com/apk/res/android"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content">
    <LinearLayout android:layout_width="500dp"
                  android:layout_height="500dp">
        <!-- Tried with a Space, an ImageView with a src. -->
        <ImageView
                android:layout_width="match_parent"
                android:layout_height="match_parent"/>
    </LinearLayout>
</FrameLayout>

结果:当它没有崩溃时(通常有很好的理由),只设置宽度。高度折叠。


相关问题

非常感谢!

4

0 回答 0