【问题标题】:custom dialog not coming properly自定义对话框未正确出现
【发布时间】:2014-03-21 02:19:16
【问题描述】:

在我的应用程序中,我尝试制作自定义对话框,因此我为此编写了一个 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"

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

现在该怎么办,

请帮忙,

谢谢。

【问题讨论】:

  • 也发布您的代码 pplz....
  • @MD: 删除没有区别 :(
  • @Android 你的问题解决了吗?
  • @MD:对不起,我正在吃午饭……去试试

标签: android xml customdialog


【解决方案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>

这对我来说是完美的工作。

更新:您只需将RelativeLayoutandroid:layout_width="wrap_content" 的属性宽度都更改为layout.xml

【讨论】:

    【解决方案2】:

    在您的代码中添加以下行:

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

    【讨论】:

      【解决方案3】:
      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);
      

      试试这个

      【讨论】:

        【解决方案4】:

        将此代码放入您的DialogueOnCreate

        getWindow().setLayout(ViewGroup.LayoutParams.MATCH_PARENT, ViewGroup.LayoutParams.WRAP_CONTENT);
        

        【讨论】:

          【解决方案5】:

          我之前发现了同样的问题,我试图解决这个问题

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

          希望对你有帮助

          【讨论】:

            猜你喜欢
            • 1970-01-01
            • 2012-04-20
            • 1970-01-01
            • 1970-01-01
            • 2019-04-18
            • 1970-01-01
            • 2021-04-10
            • 1970-01-01
            • 1970-01-01
            相关资源
            最近更新 更多