这里遇到了另一种奇怪的行为。这次我的对话框正在缩小宽度,尽管将所有父布局的宽度设置为fill_parent。这是图像...
我尝试将其设为主题设置为清单中的Dialog的活动。它仍然表现相同。但是,只要将第一个TextView“用户协议”的layout_width设置为fill_parent,它就会变为正常。但我不明白这种行为,因为它不应该依赖TextView的宽度来获得自己的宽度。请告诉我是否有其他有效的方法来处理这类情况。我的布局代码如下:
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:background="@layout/gradientback"
android:orientation="vertical" >
<TextView
android:id="@+id/textView3"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_margin="10dp"
android:text="User Agreement"
android:textAppearance="?android:attr/textAppearanceMedium"
android:textColor="#B80303" />
<View
android:layout_width="fill_parent"
android:layout_height="3dip"
android:background="?android:attr/listDivider" >
</View>
<LinearLayout
android:id="@+id/linearLayout4"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:orientation="vertical" >
<CheckBox
android:id="@+id/checkBoxForTermsId"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:textColor="#7B4302"
android:text="I Agree The Terms & Conditions" >
</CheckBox>
这不是布局的完整代码,因为我认为不需要...
显示Dialog的代码如下:
private void showAgreementBox() {
// TODO Auto-generated method stub
final Dialog dialog = new Dialog(Launcher.this);
dialog.requestWindowFeature(Window.FEATURE_NO_TITLE);
dialog.setContentView(R.layout.useragreement);
dialog.setTitle("User Agreement");
dialog.setCancelable(false);
final TextView userAg = (TextView) dialog.findViewById(R.id.textViewOfUserAg);
final CheckBox checkUserAg = (CheckBox) dialog.findViewById(R.id.checkBoxForTermsId);
final Button continueB = (Button) dialog.findViewById(R.id.continueB);
checkUserAg.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View v) {
// TODO Auto-generated method stub
if (checkUserAg.isChecked() == true) {
continueB.setEnabled(true);
} else {
continueB.setEnabled(false);
}
}
});
continueB.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View v) {
// TODO Auto-generated method stub
dialog.dismiss();
//checkForTrialPeriod(isUserRegisterd);
}
});
Button cancelB = (Button) dialog.findViewById(R.id.cancelB);
cancelB.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View v) {
// TODO Auto-generated method stub
finish();
}
});
dialog.show();
}
答案 0 :(得分:3)
修复父版面的宽度
android:layout_width="400dp"
fill_parent适用于Activity xml,但对于对话框,您必须设置宽度。
如果您要在父布局中寻找一般解决方案将图片设置为背景,就像我们将图片放在不同的可绘制文件夹中以支持多个屏幕一样。
您还可以使用
将宽度设置为全屏dialog.getWindow().getAttributes().width = LayoutParams.FILL_PARENT;
为什么对话框显示此行为
对话框主题作为其性质的一部分,将顶级窗口布局设置为WRAP_CONTENT。您可以尝试手动将窗口布局宽度和高度设置为FILL_PARENT。
从answer获取参考资料。
答案 1 :(得分:1)
setContentView(R.layout.layout_name);
getWindow().setLayout(ViewGroup.LayoutParams.MATCH_PARENT,ViewGroup.LayoutParams.MATCH_PARENT);
这对我有用。