自定义对话框不正确

时间:2014-02-20 08:56:20

标签: android xml customdialog

在我的应用程序中,我尝试创建自定义对话框,因此我为此编写了一个XML,并且在我的XML中它看起来像这样,

enter image description here

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>

当我在我的设备上运行时,

它就像这样,

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"

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

现在该怎么做,

请帮忙,

感谢。

5 个答案:

答案 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);      
}

希望有所帮助