1

我对如下实现的自定义对话框有疑问:

    AlertDialog.Builder dialogBuilder = new AlertDialog.Builder(this);

    dialogBuilder.setTitle("Title");
    dialogBuilder.setMessage("Message");

    LinearLayout layout = new LinearLayout(this);
    layout.setOrientation(LinearLayout.VERTICAL);
    layout.setGravity(Gravity.CENTER_HORIZONTAL | Gravity.CENTER_VERTICAL);

    // Set an EditText view to get user input
    EditText input = new EditText(this);
    input.setHeight(LayoutParams.WRAP_CONTENT);
    input.setWidth(LayoutParams.MATCH_PARENT);
    layout.addView(input);

    TextView text = new TextView(this);
    text.setText("show some text here");
    text.setHeight(LayoutParams.WRAP_CONTENT);
    text.setWidth(LayoutParams.MATCH_PARENT);
    //text.setHeight(50);
    //text.setWidth(150);
    text.setVisibility(TextView.VISIBLE);
    layout.addView(text);

    Button btn = new Button(this);
    btn.setText("Button");
    btn.setHeight(LayoutParams.WRAP_CONTENT);
    btn.setWidth(LayoutParams.WRAP_CONTENT);
    layout.addView(btn);

    dialogBuilder.setView(layout);
    dialogBuilder.setPositiveButton("Ok", null);

    AlertDialog myDialog = dialogBuilder.create();
    myDialog.show();

问题是TextView text如果我在上面的代码中设置它的宽度和高度,它不会显示在对话框中。仅当我对属性(两条注释行)进行硬编码时才会出现,但这不是所需的行为。

此外,虽然 Button 的宽度设置为WRAP_CONTENT,但它与屏幕一样大。

有人可以指出我在这里做错了什么吗?

4

1 回答 1

0

您应该使用 setLayoutParams() 而不是 setHeight() 和 setWidth()

代替

text.setHeight(LayoutParams.WRAP_CONTENT);
text.setWidth(LayoutParams.MATCH_PARENT);

有了这个

text.setLayoutParams(new LayoutParams(LayoutParams.WRAP_CONTENT, LayoutParams.MATCH_PARENT));

编辑:关于按钮使用:

btn.setLayoutParams(new LayoutParams(LayoutParams.WRAP_CONTENT, LayoutParams.WRAP_CONTENT));

它对我有用...

编辑2:如果你使用text.setHeight(LayoutParams.WRAP_CONTENT);它等于text.setHeight(-2);所以你textView将是-2像素高度并且将不可见......Buttons另一方面,使用ninepatch图像的其他人不会比ninepatch本身小。

于 2012-08-05T00:26:47.090 回答