我遇到如下实现的自定义对话框的问题:
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
,但它与屏幕一样大。
有人可以指出我在这里做错了吗?
答案 0 :(得分:0)
你应该使用setLayoutParams()而不是setHeight()和setWidth()
替换
text.setHeight(LayoutParams.WRAP_CONTENT);
text.setWidth(LayoutParams.MATCH_PARENT);
有了这个
text.setLayoutParams(new LayoutParams(LayoutParams.WRAP_CONTENT, LayoutParams.MATCH_PARENT));
编辑: 关于Button使用:
btn.setLayoutParams(new LayoutParams(LayoutParams.WRAP_CONTENT, LayoutParams.WRAP_CONTENT));
对我有用......
编辑2:
如果您使用text.setHeight(LayoutParams.WRAP_CONTENT);
它等于text.setHeight(-2);
,那么您的textView
将是-2像素高度,并且在另一只手Buttons
上看不见...使用9patch图像的其他图像不会比9patch本身小。