【问题标题】:How to work with RelativeLayout in android?如何在android中使用RelativeLayout?
【发布时间】:2014-04-09 18:24:35
【问题描述】:

我有一个包含许多编辑文本、按钮和文本视图的相对布局,我将它们安排在 4 个线性布局中,作为相对布局的子级。问题是,如果我使用不同尺寸的屏幕,LinearLayouts 与我放置它们的位置不同,我无法使其工作。如何处理这个问题?这是我拥有它们的 medii.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"
    android:background="@drawable/mediib" >

    <LinearLayout
        android:id="@+id/linearLayout1"
        android:layout_width="160dp"
        android:layout_height="200dp"
        android:layout_alignParentLeft="true"
        android:layout_alignParentTop="true"
        android:layout_marginLeft="37dp"
        android:layout_marginTop="255dp"
        android:orientation="vertical" >

        <EditText
            android:id="@+id/editText1"
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:background="@drawable/nota2"
            android:gravity="center"
            android:hint="@string/nota"
            android:inputType="number"
            android:textColorHint="@color/white" />

        <Button
            android:id="@+id/button2"
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:background="@drawable/bb" />

        <Button
            android:id="@+id/button1"
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:background="@drawable/bbc" />

        <TextView
            android:id="@+id/textView1"
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:gravity="center"
            android:text="TextView"
            android:textColor="@color/white"
            android:textSize="25sp" />
    </LinearLayout>

    <LinearLayout
        android:id="@+id/linearLayout3"
        android:layout_width="160dp"
        android:layout_height="200dp"
        android:layout_alignParentRight="true"
        android:layout_alignTop="@+id/linearLayout1"
        android:layout_marginRight="33dp"
        android:orientation="vertical" >

        <EditText
            android:id="@+id/EditText02"
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:background="@drawable/nota2"
            android:gravity="center"
            android:hint="@string/nota"
            android:inputType="number"
            android:textColorHint="@color/white" >

            <requestFocus />
        </EditText>

        <EditText
            android:id="@+id/EditText01"
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:background="@drawable/nota2"
            android:gravity="center"
            android:hint="@string/teze"
            android:inputType="number"
            android:textColorHint="@color/white" />

        <Button
            android:id="@+id/Button02"
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:background="@drawable/bb" />

        <Button
            android:id="@+id/Button01"
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:background="@drawable/bbc" />

        <TextView
            android:id="@+id/TextView01"
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:gravity="center"
            android:text="TextView"
            android:textColor="@color/white"
            android:textSize="25sp" />
    </LinearLayout>

    <LinearLayout
        android:id="@+id/linearLayout4"
        android:layout_width="160dp"
        android:layout_height="200dp"
        android:layout_alignLeft="@+id/linearLayout3"
        android:layout_alignParentBottom="true"
        android:layout_marginBottom="45dp"
        android:orientation="vertical" >

        <EditText
            android:id="@+id/EditText03"
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:background="@drawable/nota2"
            android:gravity="center"
            android:hint="@string/nota"
            android:inputType="number"
            android:textColorHint="@color/white" />

        <Button
            android:id="@+id/Button06"
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:background="@drawable/bb" />

        <Button
            android:id="@+id/Button05"
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:background="@drawable/bbc" />

        <TextView
            android:id="@+id/TextView03"
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:gravity="center"
            android:text="TextView"
            android:textColor="@color/white"
            android:textSize="25sp" />
    </LinearLayout>

    <LinearLayout
        android:id="@+id/linearLayout2"
        android:layout_width="160dp"
        android:layout_height="200dp"
        android:layout_alignLeft="@+id/linearLayout1"
        android:layout_alignTop="@+id/linearLayout4"
        android:orientation="vertical" >

        <EditText
            android:id="@+id/EditText04"
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:background="@drawable/nota2"
            android:gravity="center"
            android:hint="@string/nota"
            android:inputType="number"
            android:textColorHint="@color/white" />

        <Button
            android:id="@+id/Button04"
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:background="@drawable/bb" />

        <Button
            android:id="@+id/Button03"
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:background="@drawable/bbc" />

        <TextView
            android:id="@+id/TextView02"
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:gravity="center"
            android:text="TextView"
            android:textColor="@color/white"
            android:textSize="25sp" />
    </LinearLayout>

</RelativeLayout>

我想要什么:我想在所有尺寸的屏幕上保留我所做的安排。

布局的外观:

【问题讨论】:

  • "...LinearLayouts 与我放置它们的位置不同..." 您打算得到什么?具体一点。
  • 我想在各种尺寸的屏幕上进行安排。
  • 还是不清楚,你让我们猜。通常会提供图片。我假设你的一些 EditTexts、Buttons 和 TextView 在屏幕后面,这没关系,考虑到垂直方向的布局数量。尝试用 ScrollView 包装所有 LinearLayouts(作为一个选项)。
  • 请告诉我您现在面临的问题。我的理解是您面临与多屏幕支持问题相关的问题。我在下面的问题中解释了这一点。stackoverflow.com/a/22836383/3484813

标签: android android-layout android-linearlayout android-relativelayout


【解决方案1】:

试试这样的。我的建议是远离“神奇”的边距和填充数字,例如 255 dp 等。尝试居中元素

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="fill_parent"
    android:layout_height="fill_parent"
    android:background="@drawable/mediib"
    android:orientation="vertical"
    android:weightSum="2" >

    <LinearLayout
        android:layout_width="fill_parent"
        android:layout_height="wrap_content"
        android:layout_weight="1"
        android:orientation="horizontal"
        android:weightSum="2" >

        <LinearLayout
            android:id="@+id/linearLayout1"
            android:layout_width="160dp"
            android:layout_height="200dp"
            android:layout_marginLeft="37dp"
            android:layout_marginTop="255dp"
            android:layout_weight="1"
            android:orientation="vertical" >

            <EditText
                android:id="@+id/editText1"
                android:layout_width="match_parent"
                android:layout_height="wrap_content"
                android:background="@drawable/nota2"
                android:gravity="center"
                android:hint="@string/nota"
                android:inputType="number"
                android:textColorHint="@color/white" />

            <Button
                android:id="@+id/button2"
                android:layout_width="match_parent"
                android:layout_height="wrap_content"
                android:background="@drawable/bb" />

            <Button
                android:id="@+id/button1"
                android:layout_width="match_parent"
                android:layout_height="wrap_content"
                android:background="@drawable/bbc" />

            <TextView
                android:id="@+id/textView1"
                android:layout_width="match_parent"
                android:layout_height="wrap_content"
                android:gravity="center"
                android:text="TextView"
                android:textColor="@color/white"
                android:textSize="25sp" />
        </LinearLayout>

        <LinearLayout
            android:id="@+id/linearLayout3"
            android:layout_width="160dp"
            android:layout_height="200dp"
            android:layout_marginRight="33dp"
            android:layout_weight="1"
            android:orientation="vertical" >

            <EditText
                android:id="@+id/EditText02"
                android:layout_width="match_parent"
                android:layout_height="wrap_content"
                android:background="@drawable/nota2"
                android:gravity="center"
                android:hint="@string/nota"
                android:inputType="number"
                android:textColorHint="@color/white" >

                <requestFocus />
            </EditText>

            <EditText
                android:id="@+id/EditText01"
                android:layout_width="match_parent"
                android:layout_height="wrap_content"
                android:background="@drawable/nota2"
                android:gravity="center"
                android:hint="@string/teze"
                android:inputType="number"
                android:textColorHint="@color/white" />

            <Button
                android:id="@+id/Button02"
                android:layout_width="match_parent"
                android:layout_height="wrap_content"
                android:background="@drawable/bb" />

            <Button
                android:id="@+id/Button01"
                android:layout_width="match_parent"
                android:layout_height="wrap_content"
                android:background="@drawable/bbc" />

            <TextView
                android:id="@+id/TextView01"
                android:layout_width="match_parent"
                android:layout_height="wrap_content"
                android:gravity="center"
                android:text="TextView"
                android:textColor="@color/white"
                android:textSize="25sp" />
        </LinearLayout>
    </LinearLayout>

    <LinearLayout
        android:layout_width="fill_parent"
        android:layout_height="wrap_content"
        android:layout_weight="1"
        android:orientation="horizontal"
        android:weightSum="2" >

        <LinearLayout
            android:id="@+id/linearLayout4"
            android:layout_width="160dp"
            android:layout_height="200dp"
            android:layout_marginBottom="45dp"
            android:layout_weight="1"
            android:orientation="vertical" >

            <EditText
                android:id="@+id/EditText03"
                android:layout_width="match_parent"
                android:layout_height="wrap_content"
                android:background="@drawable/nota2"
                android:gravity="center"
                android:hint="@string/nota"
                android:inputType="number"
                android:textColorHint="@color/white" />

            <Button
                android:id="@+id/Button06"
                android:layout_width="match_parent"
                android:layout_height="wrap_content"
                android:background="@drawable/bb" />

            <Button
                android:id="@+id/Button05"
                android:layout_width="match_parent"
                android:layout_height="wrap_content"
                android:background="@drawable/bbc" />

            <TextView
                android:id="@+id/TextView03"
                android:layout_width="match_parent"
                android:layout_height="wrap_content"
                android:gravity="center"
                android:text="TextView"
                android:textColor="@color/white"
                android:textSize="25sp" />
        </LinearLayout>

        <LinearLayout
            android:id="@+id/linearLayout2"
            android:layout_width="160dp"
            android:layout_height="200dp"
            android:layout_weight="1"
            android:orientation="vertical" >

            <EditText
                android:id="@+id/EditText04"
                android:layout_width="match_parent"
                android:layout_height="wrap_content"
                android:background="@drawable/nota2"
                android:gravity="center"
                android:hint="@string/nota"
                android:inputType="number"
                android:textColorHint="@color/white" />

            <Button
                android:id="@+id/Button04"
                android:layout_width="match_parent"
                android:layout_height="wrap_content"
                android:background="@drawable/bb" />

            <Button
                android:id="@+id/Button03"
                android:layout_width="match_parent"
                android:layout_height="wrap_content"
                android:background="@drawable/bbc" />

            <TextView
                android:id="@+id/TextView02"
                android:layout_width="match_parent"
                android:layout_height="wrap_content"
                android:gravity="center"
                android:text="TextView"
                android:textColor="@color/white"
                android:textSize="25sp" />
        </LinearLayout>
    </LinearLayout>

</LinearLayout>

编辑:我对它进行了相当多的编辑,删除了图片和字符串,因此我可以在我的 Eclipse 中看到它,您可能想要将它们添加回来。我的外观与您在图片中想要实现的效果非常相似。这是你想要达到的目标吗?

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

    <LinearLayout
        android:layout_width="fill_parent"
        android:layout_height="wrap_content"
        android:layout_weight="1"
        android:orientation="horizontal"
        android:weightSum="2" >

        <LinearLayout
            android:id="@+id/linearLayout1"
            android:layout_width="fill_parent"
            android:layout_height="wrap_content"
            android:layout_weight="1"
            android:gravity="center"
            android:orientation="vertical" >

            <EditText
                android:id="@+id/editText1"
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:inputType="number"
                android:text="asd" />

            <Button
                android:id="@+id/button2"
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:text="asd" />

            <Button
                android:id="@+id/button1"
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:text="asd" />

            <TextView
                android:id="@+id/textView1"
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:text="TextView"
                android:textSize="25sp" />
        </LinearLayout>

        <LinearLayout
            android:id="@+id/linearLayout3"
            android:layout_width="fill_parent"
            android:layout_height="wrap_content"
            android:layout_weight="1"
            android:gravity="center"
            android:orientation="vertical" >

            <EditText
                android:id="@+id/EditText02"
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:gravity="center"
                android:inputType="number"
                android:text="asd" >
            </EditText>

            <EditText
                android:id="@+id/EditText01"
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:inputType="number"
                android:text="asd" />

            <Button
                android:id="@+id/Button02"
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:text="asd" />

            <Button
                android:id="@+id/Button01"
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:text="asd" />

            <TextView
                android:id="@+id/TextView01"
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:gravity="center"
                android:text="TextView"
                android:textSize="25sp" />
        </LinearLayout>
    </LinearLayout>

    <LinearLayout
        android:layout_width="fill_parent"
        android:layout_height="wrap_content"
        android:layout_weight="1"
        android:orientation="horizontal"
        android:weightSum="2" >

        <LinearLayout
            android:id="@+id/linearLayout4"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_weight="1"
            android:gravity="center"
            android:orientation="vertical" >

            <EditText
                android:id="@+id/EditText03"
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:gravity="center"
                android:inputType="number"
                android:text="asd" />

            <Button
                android:id="@+id/Button06"
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:text="asd" />

            <Button
                android:id="@+id/Button05"
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:text="asd" />

            <TextView
                android:id="@+id/TextView03"
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:gravity="center"
                android:text="TextView"
                android:textSize="25sp" />
        </LinearLayout>

        <LinearLayout
            android:id="@+id/linearLayout2"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_weight="1"
            android:gravity="center"
            android:orientation="vertical" >

            <EditText
                android:id="@+id/EditText04"
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:gravity="center"
                android:inputType="number"
                android:text="asd" />

            <Button
                android:id="@+id/Button04"
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:text="asd" />

            <Button
                android:id="@+id/Button03"
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:text="asd" />

            <TextView
                android:id="@+id/TextView02"
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:gravity="center"
                android:text="TextView"
                android:textSize="25sp" />
        </LinearLayout>
    </LinearLayout>

</LinearLayout>

【讨论】:

  • 它的位置不完全相同,因为不同的手机有不同的分辨率。就像我之前说的,尝试使用按钮居中而不是使用随机魔法数字填充和边距,以在不同分辨率下获得最佳效果
  • 我知道它不可能完全正确,但它甚至不好,我的意思是,有些项目不在布局上,你不能使用它们......关于居中,我用过这种方法适用于我可以完成的其他布局,但在这里,布局应该如图所示,如果我可以将它们居中,我就不会请求帮助。谢谢!
猜你喜欢
  • 2023-04-01
  • 1970-01-01
  • 2014-06-14
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多