【问题标题】:Android layout_weight not working as it should beAndroid layout_weight 无法正常工作
【发布时间】:2014-08-19 16:22:00
【问题描述】:

我正在尝试将 ImageView 和 LinearLayout 设置为各占屏幕的一半。这在平板电脑上效果很好,但在较小的屏幕上,图像会占据整个屏幕(因此,实际上不起作用)。

我看到的方式是,我在 ImageView 和 LinearLayout 上都设置了 layout_weight="1" ,并且在两者上也设置了 layout_width="0dp" 。这应该有效,因为我对此进行了很多研究。

我的代码:

<?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"
    android:background="@color/button_text_white">

    <ScrollView
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        android:fillViewport="true"
        android:scrollbars="none">

        <LinearLayout
            android:layout_width="match_parent"
            android:layout_height="match_parent"
            android:orientation="vertical">

            <ImageView
                android:layout_width="match_parent"
                android:layout_height="0dp"
                android:layout_weight="1"
                android:background="@drawable/image"/>

            <LinearLayout
                android:layout_width="match_parent"
                android:layout_height="0dp"
                android:layout_weight="1"
                android:padding="20dp"
                android:orientation="vertical"
                android:gravity="bottom">

                <TextView
                    android:id="@+id/text_view_title"
                    android:layout_width="match_parent"
                    android:layout_height="wrap_content"
                    android:layout_marginBottom="25dp"
                    android:gravity="center"
                    android:textSize="24dp"
                    android:textColor="@color/button_text_white"
                    android:visibility="invisible"/>

                <TextView
                    android:id="@+id/text_username"
                    android:layout_width="wrap_content"
                    android:layout_height="wrap_content"
                    android:text="@string/sign_up_in_username_text"
                    android:textColor="@color/color"/>

                <EditText
                    android:id="@+id/edit_text_username"
                    android:layout_width="match_parent"
                    android:layout_height="wrap_content"
                    android:layout_marginBottom="15dp"
                    android:inputType="text"
                    android:textColor="@color/color"
                    android:hint="@string/sign_up_in_username_hint"/>

                <TextView
                    android:id="@+id/text_email"
                    android:layout_width="wrap_content"
                    android:layout_height="wrap_content"
                    android:text="@string/sign_up_in_email_text"
                    android:textColor="@color/color"/>

                <EditText
                    android:id="@+id/edit_text_email"
                    android:layout_width="match_parent"
                    android:layout_height="wrap_content"
                    android:layout_marginBottom="15dp"
                    android:inputType="textEmailAddress"
                    android:textColor="@color/color"
                    android:hint="@string/sign_up_in_email_hint"/>

                <TextView
                    android:layout_width="wrap_content"
                    android:layout_height="wrap_content"
                    android:text="@string/sign_up_in_password_text"
                    android:textColor="@color/color"/>

                <EditText
                    android:id="@+id/edit_text_password"
                    android:layout_width="match_parent"
                    android:layout_height="wrap_content"
                    android:layout_marginBottom="15dp"
                    android:inputType="textPassword"
                    android:textColor="@color/color"
                    android:hint="@string/sign_up_in_password_hint"/>

                <TextView
                    android:id="@+id/text_view_forgotten_password"
                    android:layout_width="match_parent"
                    android:layout_height="wrap_content"
                    android:layout_marginBottom="15dp"
                    android:gravity="right"
                    android:text="@string/forgotten_password_text"
                    android:textColor="@color/color"/>

                <Button
                    android:id="@+id/button_sign_up_in"
                    android:layout_width="match_parent"
                    android:layout_height="wrap_content"
                    android:layout_alignParentBottom="true"
                    android:textColor="@color/color"/>
            </LinearLayout>
        </LinearLayout>
    </ScrollView>
</RelativeLayout>

谢谢,感谢任何帮助!

【问题讨论】:

  • 尝试将weightSum="2"设置为它的父布局。
  • 你的父布局应该有weightSum = "2"
  • 对不起,我应该提到我已经尝试过了,它仍然不起作用:/
  • 您使用的是ScrollView,它没有特定的高度,因此会出现问题。
  • weightSum 大部分时间都不需要。如果漏掉,系统会为你计算出来的

标签: java android xml layout


【解决方案1】:

我会说你的问题是LinearLayout 的高度在ScrollView 内设置为match_parent

如您所知,ScrollView 会展开以适应其内容 - 现在,如果您告诉其内容展开与其父级 (match_parent) 一样大,那么您就有悖论了。

尝试将 ScrollView 的子级高度设置为 wrap_content 而不是 match_parent

【讨论】:

  • 不幸的是,这仍然不适用于较小的屏幕尺寸,我会用我当前的代码更新问题
【解决方案2】:

您的 ScrollView 没有用处,它是父级 RelativeLayout。如下所示减少您的布局。

<LinearLayout>
    <ImageView w="1"/>
    <ScrollView w="1">
        <LinearLayout>
            ....
        </LinearLayout>
    </ScrollView>
</LinearLayout>

.

<?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"
    android:background="@color/button_text_white">

   <ImageView
    android:layout_width="match_parent"
    android:layout_height="0dp"
    android:layout_weight="1"
    android:background="@drawable/image"/>

    <ScrollView
        android:layout_width="match_parent"
        android:layout_height="0dp"
        android:layout_weight="1"
        android:scrollbars="none">

        <LinearLayout
            android:layout_width="match_parent"
            android:layout_height="match_parent"
            android:padding="20dp"
            android:orientation="vertical"
            android:gravity="bottom">

            <TextView
                android:id="@+id/text_view_title"
                android:layout_width="match_parent"
                android:layout_height="wrap_content"
                android:layout_marginBottom="25dp"
                android:gravity="center"
                android:textSize="24dp"
                android:textColor="@color/button_text_white"
                android:visibility="invisible"/>

            <TextView
                android:id="@+id/text_username"
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:text="@string/sign_up_in_username_text"
                android:textColor="@color/color"/>

            <EditText
                android:id="@+id/edit_text_username"
                android:layout_width="match_parent"
                android:layout_height="wrap_content"
                android:layout_marginBottom="15dp"
                android:inputType="text"
                android:textColor="@color/color"
                android:hint="@string/sign_up_in_username_hint"/>

            <TextView
                android:id="@+id/text_email"
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:text="@string/sign_up_in_email_text"
                android:textColor="@color/color"/>

            <EditText
                android:id="@+id/edit_text_email"
                android:layout_width="match_parent"
                android:layout_height="wrap_content"
                android:layout_marginBottom="15dp"
                android:inputType="textEmailAddress"
                android:textColor="@color/color"
                android:hint="@string/sign_up_in_email_hint"/>

            <TextView
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:text="@string/sign_up_in_password_text"
                android:textColor="@color/color"/>

            <EditText
                android:id="@+id/edit_text_password"
                android:layout_width="match_parent"
                android:layout_height="wrap_content"
                android:layout_marginBottom="15dp"
                android:inputType="textPassword"
                android:textColor="@color/color"
                android:hint="@string/sign_up_in_password_hint"/>

            <TextView
                android:id="@+id/text_view_forgotten_password"
                android:layout_width="match_parent"
                android:layout_height="wrap_content"
                android:layout_marginBottom="15dp"
                android:gravity="right"
                android:text="@string/forgotten_password_text"
                android:textColor="@color/color"/>

            <Button
                android:id="@+id/button_sign_up_in"
                android:layout_width="match_parent"
                android:layout_height="wrap_content"
                android:layout_alignParentBottom="true"
                android:textColor="@color/color"/>
        </LinearLayout>
    </ScrollView>
</LinearLayout>

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2015-08-31
    • 2023-03-26
    • 2017-03-10
    • 2012-09-13
    • 2012-03-24
    • 2012-11-03
    • 2013-11-24
    • 1970-01-01
    相关资源
    最近更新 更多