LinearLayout中的Layout_weight与ScrollView

时间:2016-07-20 17:30:07

标签: android android-layout

我有一个类似于联系表单的LinearLayout,供用户编辑他的个人资料。但是,无论我给layout_weight提供什么样的大小,editText的大小都不会改变。 Tyvm任何帮助!

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

    <include
        android:id="@+id/tool_bar"
        layout="@layout/toolbar_all_activities" />

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

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

            <LinearLayout
                android:id="@+id/viewUploadPicture"
                android:layout_width="match_parent"
                android:layout_height="wrap_content"
                android:layout_weight="25"
                android:layout_marginTop="20dp"
                android:clickable="true"
                android:orientation="horizontal">

                <de.hdodenhof.circleimageview.CircleImageView
                    android:id="@+id/imgUserProfile"
                    android:layout_width="0dp"
                    android:layout_height="90dp"
                    android:layout_gravity="center_horizontal"
                    android:layout_weight="0.5"
                    android:src="@drawable/skate_boarder" />

                <TextView
                    android:layout_width="0dp"
                    android:layout_height="80dp"
                    android:layout_marginEnd="15dp"
                    android:layout_marginRight="15dp"
                    android:layout_weight="0.5"
                    android:gravity="center_vertical|start"
                    android:text="@string/user.edit.upload_photo"
                    android:textColor="@color/fourth_grey"
                    android:textSize="18sp" />

            </LinearLayout>

            <TextView
                style="@style/editProfileTextView"
                android:layout_width="wrap_content"
                android:layout_height="0dp"
                android:layout_weight="40"
                android:text="@string/user.first_name" />

            <EditText
                android:id="@+id/txtEditProfileFirstName"
                style="@style/editTextRoundGrey"
                android:layout_width="match_parent"
                android:layout_height="0dp"
                android:layout_weight="50" />

            <TextView
                style="@style/editProfileTextView"
                android:layout_width="wrap_content"
                android:layout_height="0dp"
                android:layout_weight="40"
                android:text="@string/user.last_name" />

            <EditText android:id="@+id/txtEditProfileLastName"
                style="@style/editTextRoundGrey"
                android:layout_width="match_parent"
                android:layout_height="0dp"
                android:layout_weight="50" />

            <TextView
                style="@style/editProfileTextView"
                android:layout_width="wrap_content"
                android:layout_height="0dp"
                android:layout_weight="40"
                android:text="@string/user.edit.favourite_hobby" />

            <EditText
                android:id="@+id/txtEditProfileFavouriteHobby"
                style="@style/editTextRoundGrey"
                android:layout_width="match_parent"
                android:layout_height="0dp"
                android:layout_weight="50" />

            <TextView
                style="@style/editProfileTextView"
                android:layout_width="wrap_content"
                android:layout_height="0dp"
                android:layout_weight="40"
                android:text="@string/user.edit.birthday_date" />

            <LinearLayout
                android:id="@+id/birthdayLayout"
                android:layout_width="300dp"
                android:layout_height="0dp"
                android:layout_marginLeft="15dp"
                android:layout_marginRight="15dp"
                android:layout_marginTop="10dp"
                android:layout_weight="50"
                android:orientation="horizontal">

                <EditText
                    android:id="@+id/txtDayBirthdayDate"
                    style="@style/editTextNumberRoundGrey"
                    android:layout_width="0dp"
                    android:layout_height="match_parent"
                    android:layout_weight="0.2" />

                <EditText
                    android:id="@+id/txtMonthBirthdayDate"
                    style="@style/editTextNumberRoundGrey"
                    android:layout_width="0dp"
                    android:layout_height="match_parent"
                    android:layout_marginLeft="10dp"
                    android:layout_marginStart="10dp"
                    android:layout_weight="0.2" />

                <EditText
                    android:id="@+id/txtYearBirthdayDate"
                    style="@style/editTextNumberRoundGrey"
                    android:layout_width="0dp"
                    android:layout_height="match_parent"
                    android:layout_marginLeft="10dp"
                    android:layout_marginStart="10dp"
                    android:layout_weight="0.5" />

            </LinearLayout>

            <TextView
                style="@style/editProfileTextView"
                android:layout_width="wrap_content"
                android:layout_height="0dp"
                android:layout_weight="40"
                android:text="@string/user.edit.bio" />

            <EditText
                style="@style/editTextRoundGreyBigger"
                android:layout_width="match_parent"
                android:layout_height="wrap_content"
                android:layout_weight="120" />

            <TextView
                style="@style/editProfileTextView"
                android:layout_width="wrap_content"
                android:layout_height="0dp"
                android:layout_weight="40"
                android:text="@string/user.edit.city" />

            <EditText
                android:id="@+id/txtEditProfileCity"
                style="@style/editTextRoundGrey"
                android:layout_width="match_parent"
                android:layout_height="0dp"
                android:layout_weight="50" />

            <TextView
                style="@style/editProfileTextView"
                android:layout_width="wrap_content"
                android:layout_height="0dp"
                android:layout_weight="40"
                android:text="@string/user.edit.languages" />

            <EditText
                android:id="@+id/txtEditProfileLanguages"
                style="@style/editTextRoundGrey"
                android:layout_width="match_parent"
                android:layout_height="0dp"
                android:layout_weight="50" />

            <TextView
                style="@style/editProfileTextView"
                android:layout_width="wrap_content"
                android:layout_height="0dp"
                android:layout_weight="40"
                android:text="@string/user.edit.password" />

            <EditText
                android:id="@+id/txtEditProfilePass"
                style="@style/editTextRoundGrey"
                android:layout_width="match_parent"
                android:layout_height="0dp"
                android:layout_weight="50" />

            <Button
                android:id="@+id/btnSubmitChangedData"
                android:layout_width="match_parent"
                android:layout_height="0dp"
                android:layout_marginLeft="15dp"
                android:layout_marginRight="15dp"
                android:layout_marginTop="15dp"
                android:layout_weight="100"
                android:padding="10dp"
                android:background="@color/red"
                android:text="@string/user.edit.submit" />

        </LinearLayout>

    </ScrollView>
</LinearLayout>

3 个答案:

答案 0 :(得分:2)

您不能在layout_weight中使用ScrollView,因为它取决于子height的{​​{1}},而layout也取决于{{1 }}的外观,这是矛盾的,因此您可以对每个孩子使用自定义layout_weight

我知道答案来晚了,但我希望它能帮助其他人。

答案 1 :(得分:0)

要更改Edittext高度,您还应该使用 maxHeight minHeight maxLines inputTypes 等属性和 textAppreance 属性,

以下示例可能会对您有所帮助:

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

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

        <LinearLayout
            android:layout_width="match_parent"
            android:layout_height="match_parent"
            android:orientation="vertical"
            android:layout_marginTop="20dp"
            android:paddingLeft="5dip"
            android:paddingRight="5dip"
            >

            <TextView
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:textSize="18sp"
                android:text="FirstName" />

            <!-- Person Name EditText-->

            <EditText
                android:id="@+id/txtEditProfileFirstName"
                android:layout_width="match_parent"
                android:layout_height="wrap_content"
                android:maxHeight="40dip"
                android:inputType="textPersonName"
                android:maxLines="1"
                android:maxLength="25"
                android:textAppearance="?android:attr/textAppearanceMedium"/>

            <TextView
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:textSize="18sp"
                android:text="LastName" />

            <EditText android:id="@+id/txtEditProfileLastName"
                android:layout_width="match_parent"
                android:layout_height="wrap_content"
                android:maxHeight="40dip"
                android:inputType="textPersonName"
                android:maxLines="1"
                android:maxLength="25"
                android:textAppearance="?android:attr/textAppearanceMedium" />

            <TextView
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:textSize="18sp"
                android:text="Hobby" />

            <EditText
                android:id="@+id/txtEditProfileFavouriteHobby"
                android:layout_width="match_parent"
                android:layout_height="wrap_content"
                android:maxHeight="40dip"
                android:inputType="text"
                android:maxLines="2"
                android:textAppearance="?android:attr/textAppearanceMedium" />

            <TextView
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:textSize="18sp"
                android:text="Birthday Date" />

            <LinearLayout
                android:id="@+id/birthdayLayout"
                android:layout_width="300dp"
                android:layout_height="wrap_content"
                android:layout_marginLeft="15dp"
                android:layout_marginRight="15dp"
                android:layout_marginTop="10dp"
                android:weightSum="1"
                android:orientation="horizontal">
`enter code here`                <EditText
                    android:id="@+id/txtDayBirthdayDate"
                    android:layout_width="wrap_content"
                    android:layout_height="wrap_content"
                    android:layout_weight="0.3"
                    android:inputType="number"
                    android:gravity="center"
                    android:layout_gravity="center"
                    android:maxLength="2"
                    />

                <EditText
                    android:id="@+id/txtMonthBirthdayDate"
                    android:layout_width="wrap_content"
                    android:layout_height="wrap_content"
                    android:layout_marginLeft="10dp"
                    android:layout_marginStart="10dp"
                    android:layout_weight="0.3"
                    android:gravity="center"
                    android:layout_gravity="center"
                    android:inputType="number"
                    android:maxLength="2"
                    />
                <EditText
                    android:id="@+id/txtYearBirthdayDate"
                    android:layout_width="wrap_content"
                    android:layout_height="wrap_content"
                    android:layout_marginLeft="10dp"
                    android:layout_marginStart="10dp"
                    android:layout_weight="0.4"
                    android:inputType="number"
                    android:gravity="center"
                    android:layout_gravity="center"
                    android:maxLength="4"
                    />
            </LinearLayout>
            <TextView
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:textSize="18sp"
                android:text="Bio" />

            <!--MultiLine EdiText-->

            <EditText
                android:layout_width="match_parent"
                android:layout_height="wrap_content"
                android:inputType="textMultiLine"
                android:minHeight="80dp"
                android:maxLines="4"
                android:isScrollContainer="true"/>
            <TextView
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:textSize="18sp"
                android:text="City"
                />
            <EditText
                android:id="@+id/txtEditProfileCity"
                android:layout_width="match_parent"
                android:layout_height="wrap_content"
                android:maxHeight="40dip"
                android:inputType="textPostalAddress"
                android:maxLines="1"
                android:maxLength="25"
                android:textAppearance="?android:attr/textAppearanceMedium" />
            <TextView
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:textSize="18sp"
                android:text="Languages" />
           <EditText
                android:id="@+id/txtEditProfileLanguages"
                android:layout_width="match_parent"
                android:layout_height="wrap_content"
                android:maxHeight="40dip"
                android:inputType="text"
                android:maxLines="1"
                android:maxLength="25"
                android:textAppearance="?android:attr/textAppearanceMedium" />

            <TextView
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:textSize="18sp"
                android:text="password" />
            <!--Password EditText-->
            <EditText
                android:id="@+id/txtEditProfilePass"
                android:layout_width="match_parent"
                android:layout_height="wrap_content"
                android:maxHeight="40dip"
                android:inputType="textPassword"
                android:maxLines="1"
                android:maxLength="25"
                android:textAppearance="?android:attr/textAppearanceMedium"/>

            <Button
                android:id="@+id/btnSubmitChangedData"
                android:layout_width="match_parent"
                android:layout_height="0dp"
                android:layout_marginLeft="15dp"
                android:layout_marginRight="15dp"
                android:layout_marginTop="15dp"
                android:layout_weight="1"
                android:padding="10dp"
                android:background="@color/red"
                android:text="Submit" />
        </LinearLayout>
    </ScrollView>
</LinearLayout>

答案 2 :(得分:0)

android:layout_weight属性与android:weightSum属性一起使用。您的孩子layout_weight必须与其父布局的weightSum相加。

您在xml代码中多次使用layout_weight而未声明weightSum如果没有android:weightSum,则android:layout_weight s将无效。例如,如果您希望父LinearLayout中的两个视图均匀分布,则可以执行以下操作:

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:orientation="vertical"
    android:weightSum="100">

    <EditText
        android:id="@+id/my_edit_text"
        android:layout_width="match_parent"
        android:layout_height="0dp"
        android:layout_weight="50"
        android:hint="type something">

    <Button
        android:id="@+id/my_button"
        android:layout_width="match_parent"
        android:layout_height="0dp"
        android:layout_weight="50"
        android:text="a button">
</LinearLayout>

请注意您孩子的观点&#39;对于垂直LinearLayout方向,layout_height需要设置为"0dp"。对于水平方向,您可以设置子视图&#39; layout_width"0dp"

有关其他示例,请参阅https://stackoverflow.com/a/7452788/4138919

上接受的答案

我还注意到您将浮点值与layout_weight的非浮点值混合。考虑坚持一个或另一个以便于阅读。