自定义对话框没有正确显示

3
在我的应用程序中,我尝试创建自定义对话框,因此我编写了一个XML文件,在我的XML文件中,它显示为下面这样:

enter image description here

我的对话框.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>

当我在我的设备上运行它时,它会出现这样的情况:

enter image description here

我尝试通过编程方式增加对话框的宽度大小,但没有任何区别。

    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"

然后也不知道这里发生了什么。

现在该怎么办呢,

请帮忙,

谢谢。


尝试像这样做:https://dev59.com/53M_5IYBdhLWcg3wfTA0#20739136 - Padma Kumar
@MD:已删除,没有区别 :( - Android
@MD:抱歉,我正在吃午餐。我马上试一下。 - Android
@Android 如果有任何疑问,请在评论区留言。 - M D
@Android你可以删除这个,因为它只是我的要求。 - M D
显示剩余5条评论
5个回答

1
在你的代码中添加以下行:

myDialog.setWindowLayoutMode(FrameLayout.LayoutParams.MATCH_PARENT, FrameLayout.LayoutParams.WRAP_CONTENT);

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);

Try this one


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();

并在`values\styles.xml`中创建`Theme_Dialog`。保留HTML格式,不进行解释。
  <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中即可。

1
将这段代码放在你的对话框的OnCreate中。
getWindow().setLayout(ViewGroup.LayoutParams.MATCH_PARENT, ViewGroup.LayoutParams.WRAP_CONTENT);

0

我之前遇到过同样的问题,尝试用这个方法解决了

@Override
public void onStart() {
    super.onStart();
    LayoutParams params = getDialog().getWindow().getAttributes();
    params.width = LayoutParams.MATCH_PARENT;
    getDialog().getWindow().setAttributes(params);      
}

希望能有所帮助


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接