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上記のコードのように幅と高さを設定すると、ダイアログに表示されないことです。プロパティ (2 つのコメント行) をハードコーディングした場合にのみ表示されますが、それは望ましい動作ではありません。

また、Button の幅は に設定されてWRAP_CONTENTいますが、画面と同じ大きさです。

誰かが私がここで間違っていることを指摘してもらえますか?

4

1 に答える 1

0

setHeight()およびsetWidth()ではなく、setLayoutParams()を使用する必要があります

交換

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 に答える