0

我想创建以下适用于每种类型平板电脑的布局。我知道我们可以通过将它们放置在可绘制对象中并对其进行编辑来设置不同的设置,但是是否有替代方法来实现呢?以下是我为所有 7 英寸尺寸的平板电脑创建的意图: 在此处输入图像描述

以下是我的xml代码:

<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent"
    >
<TextView
    android:id="@+id/widget38"
    android:layout_width="480dp"
    android:layout_height="45dp"
    android:background="@color/White"
    android:text="Reminder"
    android:textSize="20dp"
    android:textColor="@color/Black"
    android:layout_alignParentTop="true"
    android:layout_alignParentLeft="true" />

<TextView
    android:id="@+id/label"
    android:layout_width="476dp"
    android:layout_height="70dp"
    android:layout_alignParentLeft="true"
    android:layout_alignParentRight="true"
    android:layout_below="@+id/widget38"
    android:background="@color/White"
    android:text="DID you have your Pill?"
    android:textColor="@color/Black"
    android:textSize="40dp" />

<Button
    android:id="@+id/yes"
    android:layout_width="224dp"
    android:layout_height="161dp"
    android:layout_alignParentBottom="true"
    android:layout_alignParentLeft="true"
    android:layout_alignRight="@+id/widget38"
    android:layout_below="@+id/label"
    android:background="@color/Green"
    android:text="Yes" />

<Button
    android:id="@+id/no"
    android:layout_width="239dp"
    android:layout_height="161dp"
    android:layout_alignParentBottom="true"
    android:layout_alignParentRight="true"
    android:layout_below="@+id/label"
    android:layout_toRightOf="@+id/widget38"
    android:background="@color/Red"
    android:text="No/Cancel" />

</RelativeLayout>

我创建警报的java代码:

Button button=(Button)findViewById(R.id.button1);
        button.setOnClickListener(new View.OnClickListener() {

            @SuppressWarnings("deprecation")
            @Override
            public void onClick(View v) {
                // TODO Auto-generated method stub


                View view= getLayoutInflater().inflate(R.layout.custom, null);
                final AlertDialog.Builder builder = new AlertDialog.Builder(MainActivity.this);


                builder.setView(view);
                // set the custom dialog components - text, image and button
                    TextView t=(TextView)view.findViewById(R.id.widget38);
                TextView text = (TextView)view.findViewById(R.id.label);

                Button yesButton = (Button) view.findViewById(R.id.yes);
                Button noButton=(Button)view.findViewById(R.id.no);



                final AlertDialog dialog=builder.create();  

                noButton.setOnClickListener(new OnClickListener() {
                    @Override
                    public void onClick(View v) {
                        dialog.dismiss();
                    }
                });



                yesButton.setOnClickListener(new OnClickListener() {
                    @Override
                    public void onClick(View v) {
                        dialog.dismiss();
                    }
                });

            Display display = getWindowManager().getDefaultDisplay(); 
                int width = display.getWidth();
                int height = display.getHeight();

                dialog.show();
                dialog.getWindow().setLayout(width, height);

根据答案编辑了代码,它在 Eclipse IDE 中正确显示,但是在模拟器上尝试时,它看起来非常不同。无法背诵..请帮助。 出现在 nexus 7 模拟器中的输出,但它在 eclipse xml 编辑器中正确显示

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

    <RelativeLayout
        android:layout_width="match_parent"
        android:layout_height="0dp"
        android:layout_weight="1"
         >

        <TextView 
            android:id="@+id/ReminderMessage"
          android:layout_width="fill_parent"  
          android:layout_height="match_parent"
            android:background="@color/Aqua"
        android:textColor="@color/Black"
    android:textSize="10dp"
            />

    </RelativeLayout>

    <LinearLayout
        android:layout_width="match_parent"
        android:layout_height="0dp"
        android:layout_weight="3" 
        android:baselineAligned="false"
        android:layout_alignParentLeft="true"
    android:layout_alignParentRight="true"

        >

        <RelativeLayout
            android:layout_width="0dp"
            android:layout_height="match_parent"
            android:layout_weight="1"
            android:background="#0F0" >

            <Button
                android:id="@+id/yes"
            android:layout_width="fill_parent"
            android:layout_height="fill_parent"
            android:text="Yes"
            android:background="@color/Green"
            android:layout_alignParentBottom="true"
    android:layout_alignParentLeft="true"
    android:layout_below="@+id/ReminderMessage"


                >
            </Button>



        </RelativeLayout>

        <RelativeLayout
            android:layout_width="0dp"
            android:layout_height="match_parent"
            android:layout_weight="1"
            android:background="#F00" >


            <Button
                android:id="@+id/no"
            android:layout_width="fill_parent"
            android:layout_height="fill_parent"
            android:text="No/Cancel"
            android:background="@color/Red"
            android:layout_alignParentBottom="true"
    android:layout_alignParentRight="true"
    android:layout_below="@+id/ReminderMessage"
                >
            </Button>

        </RelativeLayout>

    </LinearLayout>

</LinearLayout>
4

1 回答 1

1

编辑:修改为显示线性布局的反向加权。

如果您想要不同尺寸的不同外观,layout/layout-large/layout-xlarge 文件夹将是定义特定于不同尺寸范围(例如 7")的警报的最简单方法。

如果您使用 Eclipse 作为您的 IDE,请选择“所有屏幕”以很好地概述一系列设备。

除此之外,如果您考虑到特定的比率,线性布局是一种根据百分比定义的简单方法。这是您的线性布局(它将保持屏幕尺寸的比例):

在此处输入图像描述

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

    <RelativeLayout
        android:layout_width="match_parent"
        android:layout_height="0dp"
        android:layout_weight="3" >

    </RelativeLayout>

    <LinearLayout
        android:layout_width="match_parent"
        android:layout_height="0dp"
        android:layout_weight="1" >

        <RelativeLayout
            android:layout_width="0dp"
            android:layout_height="match_parent"
            android:layout_weight="1"
            android:background="#0F0" >

        </RelativeLayout>

        <RelativeLayout
            android:layout_width="0dp"
            android:layout_height="match_parent"
            android:layout_weight="1"
            android:background="#F00" >

        </RelativeLayout>

    </LinearLayout>

</LinearLayout>
于 2013-04-07T01:48:58.873 回答