我有一个类似于联系表单的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>
答案 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
的非浮点值混合。考虑坚持一个或另一个以便于阅读。