在我的应用程序中,我尝试创建自定义对话框,因此我为此编写了一个XML,并且在我的XML中它看起来像这样,
dialog.xml,
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:orientation="vertical"
>
<RelativeLayout android:layout_width="fill_parent"
android:layout_height="50.0dip"
android:layout_marginTop="5.0dip"
android:layout_margin="5.0dip">
<TextView android:id="@+id/textViewOTPDialogMessage" android:text="@string/OTPDialogActivityMessage" android:gravity="center" android:textStyle="bold" android:textColor="#ff4d4d4d"
android:layout_width="wrap_content" android:textSize="18dp"
android:layout_height="wrap_content"
android:layout_centerVertical="true" />
<View android:layout_marginTop="1.0dip" android:layout_below="@+id/textViewOTPDialogMessage" android:layout_width="fill_parent" android:layout_height="1dp" android:background="@android:color/darker_gray"/>
</RelativeLayout>
<RelativeLayout android:layout_width="fill_parent" android:layout_height="50.0dip" android:layout_marginTop="5.0dip">
<TextView android:text="E-Mail Id OTP* " android:id="@+id/textViewEmailOTP" android:textStyle="bold" android:textColor="#ff4d4d4d"
android:gravity="left" android:layout_width="wrap_content"
android:layout_height="wrap_content" android:layout_marginLeft="10.0dip" android:layout_alignParentLeft="true"
android:layout_centerVertical="true" />
<EditText
android:id="@+id/editTextEmailIdOtp" android:background="@drawable/custom_edittext"
android:paddingLeft="5.0dip" android:layout_width="fill_parent" android:layout_height="35.0dip"
android:layout_marginLeft="150.0dip" android:layout_marginRight="10.0dip"
android:singleLine="true" android:layout_alignParentLeft="true"
android:layout_centerVertical="true" android:imeOptions="actionNext" />
</RelativeLayout>
<RelativeLayout android:layout_width="fill_parent" android:layout_height="50.0dip">
<TextView android:text="Mobile OTP* " android:id="@+id/textViewMobileOTP" android:textStyle="bold" android:textColor="#ff4d4d4d"
android:gravity="left" android:layout_width="wrap_content"
android:layout_height="wrap_content" android:layout_marginLeft="10.0dip" android:layout_alignParentLeft="true"
android:layout_centerVertical="true" />
<EditText
android:id="@+id/editTextMobileOtp" android:background="@drawable/custom_edittext"
android:paddingLeft="5.0dip" android:layout_width="fill_parent" android:layout_height="35.0dip"
android:layout_marginLeft="150.0dip" android:layout_marginRight="10.0dip"
android:singleLine="true" android:layout_alignParentLeft="true"
android:layout_centerVertical="true" android:imeOptions="actionNext" />
</RelativeLayout>
<Button android:id="@+id/btnValidate" android:text="Validate" android:textSize="18.0sp" android:textStyle="bold" android:textColor="#ff4d4d4d"
android:layout_gravity="center_horizontal" android:layout_width="wrap_content"
android:layout_height="wrap_content" android:layout_marginTop="10.0dip" android:layout_marginBottom="10.0dip" />
</LinearLayout>
当我在我的设备上运行时,
它就像这样,
我尝试以编程方式增加对话框的宽度,但没有区别,
private void callOTPDialog()
{
Dialog myDialog = new Dialog(this);
myDialog.requestWindowFeature(Window.FEATURE_NO_TITLE);
myDialog.getWindow().setLayout(600, 400);
myDialog.setContentView(R.layout.otpdialog);
myDialog.setCancelable(false);
Button btnValidate = (Button) myDialog.findViewById(R.id.btnValidate);
EditText email = (EditText) myDialog.findViewById(R.id.editTextEmailIdOtp);
EditText mobile = (EditText) myDialog.findViewById(R.id.editTextMobileOtp);
myDialog.show();
btnValidate.setOnClickListener(new OnClickListener()
{
@Override
public void onClick(View v)
{
//your login calculation goes here
}
});
}
在XML中我提到过这些行,
android:layout_width="fill_parent"
android:layout_height="wrap_content"
然后也不知道这里发生了什么。
现在该怎么做,
请帮忙,
感谢。
答案 0 :(得分:1)
在代码中添加以下行:
myDialog.setWindowLayoutMode(FrameLayout.LayoutParams.MATCH_PARENT, FrameLayout.LayoutParams.WRAP_CONTENT);
答案 1 :(得分:1)
final Dialog dialog = new Dialog(mContext);
dialog.requestWindowFeature((int) Window.FEATURE_NO_TITLE);
dialog.setContentView(R.layout.your_layout_here);
WindowManager.LayoutParams lp = new WindowManager.LayoutParams();
lp.copyFrom(dialog.getWindow().getAttributes());
lp.width = WindowManager.LayoutParams.WRAP_CONTENT;
lp.height = WindowManager.LayoutParams.WRAP_CONTENT;
dialog.getWindow().setAttributes(lp);
试试这个
答案 2 :(得分:1)
尝试如下:
LayoutInflater factory = LayoutInflater.from(Splash.this);
View DialogView = factory.inflate(
R.layout.custom_progress_layout, null);
Dialog main_dialog = new Dialog(Splash.this,R.style.Theme_Dialog);
main_dialog.setContentView(DialogView);
main_dialog.show();
并将Theme_Dialog
创建为values\styles.xml
<style name="Theme_Dialog" parent="android:Theme.Holo.Dialog">
<item name="android:backgroundDimEnabled">false</item>
<item name="android:layout_width">fill_parent</item>
<item name="android:windowNoTitle">true</item>
<item name="android:windowBackground">@android:color/transparent</item>
</style>
这在我的案例中非常完美。
更新:您只需将RelativeLayout
属性宽度android:layout_width="wrap_content"
更改为layout.xml
。
答案 3 :(得分:1)
将此代码放入OnCreate
Dialogue
getWindow().setLayout(ViewGroup.LayoutParams.MATCH_PARENT, ViewGroup.LayoutParams.WRAP_CONTENT);
答案 4 :(得分:0)
之前我发现了同样的问题,我试图解决这个问题
@Override
public void onStart() {
super.onStart();
LayoutParams params = getDialog().getWindow().getAttributes();
params.width = LayoutParams.MATCH_PARENT;
getDialog().getWindow().setAttributes(params);
}
希望有所帮助