如何在不同屏幕尺寸的设备中显示相同大小的对话框

时间:2014-03-14 10:35:36

标签: android android-layout android-dialog

我在应用程序中创建了一个固定大小的对话框。虽然我测试了240x320像素大小的手机,但它显示完美。但它在平板电脑中显示不合适。看下面的图片

enter image description here

来自手机的图片

enter image description here 选项卡中的图片

我试过下面的代码

public void showDialog(){
    // Create custom dialog object
    final Dialog dialog = new Dialog(MainActivity.this);
    // Include dialog.xml file
    dialog.setContentView(R.layout.dialog);
    // Set dialog title
    dialog.setTitle("Custom Dialog");

    // set values for custom dialog components - text, image and button
    TextView text = (TextView) dialog.findViewById(R.id.textDialog);
    text.setText("Custom dialog Android example.");
    ImageView image = (ImageView) dialog.findViewById(R.id.imageDialog);
    image.setImageResource(R.drawable.ic_launcher);

    dialog.show();
    dialog.getWindow().setLayout(180, 150);

    Button declineButton = (Button) dialog.findViewById(R.id.declineButton);
    // if decline button is clicked, close the custom dialog
    declineButton.setOnClickListener(new OnClickListener() {
        @Override
        public void onClick(View v) {
            // Close dialog
            dialog.dismiss();
        }
    });

}

dialog.xml

<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="fill_parent"
android:layout_height="fill_parent" >

<ImageView
    android:id="@+id/imageDialog"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:layout_marginRight="6dp" />

<TextView
    android:id="@+id/textDialog"
    android:layout_width="fill_parent"
    android:layout_height="wrap_content"
    android:textColor="#FFF"
    android:layout_toRightOf="@+id/imageDialog"/>

 <Button
    android:id="@+id/declineButton"
    android:layout_width="100px"
    android:layout_height="wrap_content"
    android:text=" Submit "
    android:layout_marginTop="5dp"
    android:layout_marginRight="5dp"
    android:layout_below="@+id/textDialog"
    android:layout_toRightOf="@+id/imageDialog"
    />

</RelativeLayout>

如何解决这个问题?

提前谢谢

2 个答案:

答案 0 :(得分:1)

最后我找到了解决方案

我删除了行 dialog.setTitle(“自定义对话框”); dialog.getWindow()。setLayout(180,150); 行并添加 dialog.requestWindowFeature(Window.FEATURE_NO_TITLE);

更正后的代码

public void showDialog(){
    // Create custom dialog object
    final Dialog dialog = new Dialog(MainActivity.this);
    // Include dialog.xml file
    dialog.requestWindowFeature(Window.FEATURE_NO_TITLE); 
    dialog.setContentView(R.layout.dialog);

    // set values for custom dialog components - text, image and button
    TextView text = (TextView) dialog.findViewById(R.id.textDialog);
    text.setText("Custom dialog Android example.");
    ImageView image = (ImageView) dialog.findViewById(R.id.imageDialog);
    image.setImageResource(R.drawable.ic_launcher);

    dialog.show();

    Button declineButton = (Button) dialog.findViewById(R.id.declineButton);
    // if decline button is clicked, close the custom dialog
    declineButton.setOnClickListener(new OnClickListener() {
        @Override
        public void onClick(View v) {
            // Close dialog
            dialog.dismiss();
        }
    });

}

我在布局文件中做了另一个更改。将 替换为 并将 android:layout_width =“fill_parent”android:layout_height =“fill_parent”替换为 android:layout_width =“180dp” android:layout_height =“150dp”

更正布局如下

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:orientation="vertical"
android:layout_width="180dp"
android:layout_height="150dp" >

<ImageView
    android:id="@+id/imageDialog"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:layout_marginRight="6dp" />

<TextView
    android:id="@+id/textDialog"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:textColor="#FFF" />

 <Button
    android:id="@+id/declineButton"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:text=" Submit "
    android:layout_marginTop="5dp"
    android:layout_marginRight="5dp"
    />

</LinearLayout>

答案 1 :(得分:0)

我不确定,但请试试这个, 在你设计部分请使用RelativeLayout的LinearLayout。