垂直 LinearLayout 中的水平 LinearLayout
Horizontal LinearLayouts in a Vertical LinearLayout
我想要一些右侧带有按钮的 EditText。现在我只是让 Edittexts 用 0dp 技巧填充父级。如果我添加按钮,EditText 的高度将缩小 wrap_content。如果我这样做 match_parent 一个 EditText 会填满整个屏幕。
RelativeLayout 不起作用,因为您不能像 LinearLayout 一样使其与父级匹配。
我想获取屏幕高度,然后将布局高度设置为该高度的 1/7(因为我有 7 个 EditText)。合理吗?
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical">
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:orientation="horizontal">
<EditText android:id="@+id/box_0"
android:layout_weight="1"
android:layout_width="0dp"
android:layout_height="wrap_content"
android:hint="@string/edit_task"
android:saveEnabled="true"
android:inputType="textCapSentences"
android:maxLength="32"
android:padding="10dp"/>
<Button
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="@string/button_send"
android:layout_gravity="end"/>
<!--red-->
</LinearLayout>
<EditText android:id="@+id/box_1"
android:layout_weight="1"
android:layout_width="match_parent"
android:layout_height="0dp"
android:saveEnabled="true"
android:inputType="textCapSentences"
android:maxLength="32"
android:padding="10dp"/>
<EditText android:id="@+id/box_2"
android:layout_weight="1"
android:layout_width="match_parent"
android:layout_height="0dp"
android:saveEnabled="true"
android:inputType="textCapSentences"
android:maxLength="32"
android:padding="10dp"/>
<EditText android:id="@+id/box_3"
android:layout_weight="1"
android:layout_width="match_parent"
android:layout_height="0dp"
android:saveEnabled="true"
android:inputType="textCapSentences"
android:maxLength="32"
android:padding="10dp"/>
<EditText android:id="@+id/box_4"
android:layout_weight="1"
android:layout_width="match_parent"
android:layout_height="0dp"
android:saveEnabled="true"
android:inputType="textCapSentences"
android:maxLength="32"
android:padding="10dp"/>
<EditText android:id="@+id/box_5"
android:layout_weight="1"
android:layout_width="match_parent"
android:layout_height="0dp"
android:saveEnabled="true"
android:inputType="textCapSentences"
android:maxLength="32"
android:padding="10dp"/>
<EditText android:id="@+id/box_6"
android:layout_weight="1"
android:layout_width="match_parent"
android:layout_height="0dp"
android:saveEnabled="true"
android:inputType="textCapSentences"
android:maxLength="32"
android:padding="10dp"/>
</LinearLayout>
我只在第一个 EditText 中做了双重 LinearLayout。
http://i.imgur.com/t4hN6nO.jpg
看到第二个比其余的大来补偿而第一个小了吗?
为什么不在其中添加一个 ScrollView?
将有大量设备永远无法正确适应屏幕中的 7 editText。
无论如何,不推荐使用嵌套 LinearLayout 权重。
但是你可以通过这种方式实现你想做的事情。
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical">
<LinearLayout
android:layout_width="match_parent"
android:layout_height="0dp"
android:layout_weight="1"
android:orientation="horizontal">
<EditText
android:id="@+id/box_0"
android:layout_width="0dp"
android:layout_height="wrap_content"
android:layout_weight="1"
android:hint="@string/edit_task"
android:inputType="textCapSentences"
android:maxLength="32"
android:padding="10dp"
android:saveEnabled="true" />
<Button
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_gravity="end"
android:text="@string/button_send" />
<!--red-->
</LinearLayout>
<LinearLayout
android:layout_width="match_parent"
android:layout_height="0dp"
android:layout_weight="1"
android:orientation="horizontal">
<EditText
android:id="@+id/box_1"
android:layout_width="0dp"
android:layout_height="wrap_content"
android:layout_weight="1"
android:hint="@string/edit_task"
android:inputType="textCapSentences"
android:maxLength="32"
android:padding="10dp"
android:saveEnabled="true" />
<Button
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_gravity="end"
android:text="@string/button_send" />
<!--red-->
</LinearLayout>
<LinearLayout
android:layout_width="match_parent"
android:layout_height="0dp"
android:layout_weight="1"
android:orientation="horizontal">
<EditText
android:id="@+id/box_2"
android:layout_width="0dp"
android:layout_height="wrap_content"
android:layout_weight="1"
android:hint="@string/edit_task"
android:inputType="textCapSentences"
android:maxLength="32"
android:padding="10dp"
android:saveEnabled="true" />
<Button
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_gravity="end"
android:text="@string/button_send" />
<!--red-->
</LinearLayout>
<LinearLayout
android:layout_width="match_parent"
android:layout_height="0dp"
android:layout_weight="1"
android:orientation="horizontal">
<EditText
android:id="@+id/box_3"
android:layout_width="0dp"
android:layout_height="wrap_content"
android:layout_weight="1"
android:hint="@string/edit_task"
android:inputType="textCapSentences"
android:maxLength="32"
android:padding="10dp"
android:saveEnabled="true" />
<Button
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_gravity="end"
android:text="@string/button_send" />
<!--red-->
</LinearLayout>
<LinearLayout
android:layout_width="match_parent"
android:layout_height="0dp"
android:layout_weight="1"
android:orientation="horizontal">
<EditText
android:id="@+id/box_4"
android:layout_width="0dp"
android:layout_height="wrap_content"
android:layout_weight="1"
android:hint="@string/edit_task"
android:inputType="textCapSentences"
android:maxLength="32"
android:padding="10dp"
android:saveEnabled="true" />
<Button
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_gravity="end"
android:text="@string/button_send" />
<!--red-->
</LinearLayout>
<LinearLayout
android:layout_width="match_parent"
android:layout_height="0dp"
android:layout_weight="1"
android:orientation="horizontal">
<EditText
android:id="@+id/box_5"
android:layout_width="0dp"
android:layout_height="wrap_content"
android:layout_weight="1"
android:hint="@string/edit_task"
android:inputType="textCapSentences"
android:maxLength="32"
android:padding="10dp"
android:saveEnabled="true" />
<Button
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_gravity="end"
android:text="@string/button_send" />
<!--red-->
</LinearLayout>
<LinearLayout
android:layout_width="match_parent"
android:layout_height="0dp"
android:layout_weight="1"
android:orientation="horizontal">
<EditText
android:id="@+id/box_6"
android:layout_width="0dp"
android:layout_height="wrap_content"
android:layout_weight="1"
android:hint="@string/edit_task"
android:inputType="textCapSentences"
android:maxLength="32"
android:padding="10dp"
android:saveEnabled="true" />
<Button
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_gravity="end"
android:text="@string/button_send" />
<!--red-->
</LinearLayout>
如您所说,需要更多工作的更好解决方案是使用 screenHeight/7
计算高度
主要有两个原因:
1. 在包含EditText 和Button 的Linearlayout 中设置android:layout_weight="1"
。
2. 在此 EditText 中设置 android:layout_height="match_parent"
,使其与父级一样高。
然后布局代码将是这样的:
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical">
<LinearLayout
android:layout_width="match_parent"
android:layout_height="0dp"
android:layout_weight="1"
android:orientation="horizontal">
<EditText
android:id="@+id/box_0"
android:layout_weight="1"
android:layout_width="0dp"
android:layout_height="match_parent"
android:saveEnabled="true"
android:inputType="textCapSentences"
android:hint="hello"
android:maxLength="32"
android:padding="10dp" />
<Button
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="test"
android:layout_gravity="end|center_vertical" />
<!--red-->
</LinearLayout>
<EditText
android:id="@+id/box_1"
android:layout_weight="1"
android:layout_width="match_parent"
android:layout_height="0dp"
android:saveEnabled="true"
android:inputType="textCapSentences"
android:maxLength="32"
android:padding="10dp" />
<EditText
android:id="@+id/box_2"
android:layout_weight="1"
android:layout_width="match_parent"
android:layout_height="0dp"
android:saveEnabled="true"
android:inputType="textCapSentences"
android:maxLength="32"
android:padding="10dp" />
<EditText
android:id="@+id/box_3"
android:layout_weight="1"
android:layout_width="match_parent"
android:layout_height="0dp"
android:saveEnabled="true"
android:inputType="textCapSentences"
android:maxLength="32"
android:padding="10dp" />
<EditText
android:id="@+id/box_4"
android:layout_weight="1"
android:layout_width="match_parent"
android:layout_height="0dp"
android:saveEnabled="true"
android:inputType="textCapSentences"
android:maxLength="32"
android:padding="10dp" />
<EditText
android:id="@+id/box_5"
android:layout_weight="1"
android:layout_width="match_parent"
android:layout_height="0dp"
android:saveEnabled="true"
android:inputType="textCapSentences"
android:maxLength="32"
android:padding="10dp" />
<EditText
android:id="@+id/box_6"
android:layout_weight="1"
android:layout_width="match_parent"
android:layout_height="0dp"
android:saveEnabled="true"
android:inputType="textCapSentences"
android:maxLength="32"
android:padding="10dp" />
预览图片:
希望对你有帮助!
试试这个:
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="0dp"
android:layout_weight="1"
android:orientation="horizontal">
<EditText android:id="@+id/box_0"
android:layout_weight="1"
android:layout_width="0dp"
android:layout_height="match_parent"
android:hint="@string/edit_task"
android:saveEnabled="true"
android:inputType="textCapSentences"
android:maxLength="32"
android:padding="10dp"/>
<Button
android:layout_width="wrap_content"
android:layout_height="match_parent"
android:text="@string/button_send"
android:layout_gravity="end"/>
<!--red-->
</LinearLayout>
你应该让你的 horizontal Linear Layout
与其他 Edit text
匹配,这就是为什么我将 layout_height
更改为 0dp 并且我还添加了 1 的 layout weight
。假设他与您的其他 Edit text
相同。另外,我将 Edit Text
中的 layout_height
更改为 "match_parent"
。所有其余代码应保持不变。
我想要一些右侧带有按钮的 EditText。现在我只是让 Edittexts 用 0dp 技巧填充父级。如果我添加按钮,EditText 的高度将缩小 wrap_content。如果我这样做 match_parent 一个 EditText 会填满整个屏幕。
RelativeLayout 不起作用,因为您不能像 LinearLayout 一样使其与父级匹配。
我想获取屏幕高度,然后将布局高度设置为该高度的 1/7(因为我有 7 个 EditText)。合理吗?
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical">
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:orientation="horizontal">
<EditText android:id="@+id/box_0"
android:layout_weight="1"
android:layout_width="0dp"
android:layout_height="wrap_content"
android:hint="@string/edit_task"
android:saveEnabled="true"
android:inputType="textCapSentences"
android:maxLength="32"
android:padding="10dp"/>
<Button
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="@string/button_send"
android:layout_gravity="end"/>
<!--red-->
</LinearLayout>
<EditText android:id="@+id/box_1"
android:layout_weight="1"
android:layout_width="match_parent"
android:layout_height="0dp"
android:saveEnabled="true"
android:inputType="textCapSentences"
android:maxLength="32"
android:padding="10dp"/>
<EditText android:id="@+id/box_2"
android:layout_weight="1"
android:layout_width="match_parent"
android:layout_height="0dp"
android:saveEnabled="true"
android:inputType="textCapSentences"
android:maxLength="32"
android:padding="10dp"/>
<EditText android:id="@+id/box_3"
android:layout_weight="1"
android:layout_width="match_parent"
android:layout_height="0dp"
android:saveEnabled="true"
android:inputType="textCapSentences"
android:maxLength="32"
android:padding="10dp"/>
<EditText android:id="@+id/box_4"
android:layout_weight="1"
android:layout_width="match_parent"
android:layout_height="0dp"
android:saveEnabled="true"
android:inputType="textCapSentences"
android:maxLength="32"
android:padding="10dp"/>
<EditText android:id="@+id/box_5"
android:layout_weight="1"
android:layout_width="match_parent"
android:layout_height="0dp"
android:saveEnabled="true"
android:inputType="textCapSentences"
android:maxLength="32"
android:padding="10dp"/>
<EditText android:id="@+id/box_6"
android:layout_weight="1"
android:layout_width="match_parent"
android:layout_height="0dp"
android:saveEnabled="true"
android:inputType="textCapSentences"
android:maxLength="32"
android:padding="10dp"/>
</LinearLayout>
我只在第一个 EditText 中做了双重 LinearLayout。
http://i.imgur.com/t4hN6nO.jpg
看到第二个比其余的大来补偿而第一个小了吗?
为什么不在其中添加一个 ScrollView? 将有大量设备永远无法正确适应屏幕中的 7 editText。
无论如何,不推荐使用嵌套 LinearLayout 权重。 但是你可以通过这种方式实现你想做的事情。
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical">
<LinearLayout
android:layout_width="match_parent"
android:layout_height="0dp"
android:layout_weight="1"
android:orientation="horizontal">
<EditText
android:id="@+id/box_0"
android:layout_width="0dp"
android:layout_height="wrap_content"
android:layout_weight="1"
android:hint="@string/edit_task"
android:inputType="textCapSentences"
android:maxLength="32"
android:padding="10dp"
android:saveEnabled="true" />
<Button
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_gravity="end"
android:text="@string/button_send" />
<!--red-->
</LinearLayout>
<LinearLayout
android:layout_width="match_parent"
android:layout_height="0dp"
android:layout_weight="1"
android:orientation="horizontal">
<EditText
android:id="@+id/box_1"
android:layout_width="0dp"
android:layout_height="wrap_content"
android:layout_weight="1"
android:hint="@string/edit_task"
android:inputType="textCapSentences"
android:maxLength="32"
android:padding="10dp"
android:saveEnabled="true" />
<Button
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_gravity="end"
android:text="@string/button_send" />
<!--red-->
</LinearLayout>
<LinearLayout
android:layout_width="match_parent"
android:layout_height="0dp"
android:layout_weight="1"
android:orientation="horizontal">
<EditText
android:id="@+id/box_2"
android:layout_width="0dp"
android:layout_height="wrap_content"
android:layout_weight="1"
android:hint="@string/edit_task"
android:inputType="textCapSentences"
android:maxLength="32"
android:padding="10dp"
android:saveEnabled="true" />
<Button
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_gravity="end"
android:text="@string/button_send" />
<!--red-->
</LinearLayout>
<LinearLayout
android:layout_width="match_parent"
android:layout_height="0dp"
android:layout_weight="1"
android:orientation="horizontal">
<EditText
android:id="@+id/box_3"
android:layout_width="0dp"
android:layout_height="wrap_content"
android:layout_weight="1"
android:hint="@string/edit_task"
android:inputType="textCapSentences"
android:maxLength="32"
android:padding="10dp"
android:saveEnabled="true" />
<Button
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_gravity="end"
android:text="@string/button_send" />
<!--red-->
</LinearLayout>
<LinearLayout
android:layout_width="match_parent"
android:layout_height="0dp"
android:layout_weight="1"
android:orientation="horizontal">
<EditText
android:id="@+id/box_4"
android:layout_width="0dp"
android:layout_height="wrap_content"
android:layout_weight="1"
android:hint="@string/edit_task"
android:inputType="textCapSentences"
android:maxLength="32"
android:padding="10dp"
android:saveEnabled="true" />
<Button
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_gravity="end"
android:text="@string/button_send" />
<!--red-->
</LinearLayout>
<LinearLayout
android:layout_width="match_parent"
android:layout_height="0dp"
android:layout_weight="1"
android:orientation="horizontal">
<EditText
android:id="@+id/box_5"
android:layout_width="0dp"
android:layout_height="wrap_content"
android:layout_weight="1"
android:hint="@string/edit_task"
android:inputType="textCapSentences"
android:maxLength="32"
android:padding="10dp"
android:saveEnabled="true" />
<Button
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_gravity="end"
android:text="@string/button_send" />
<!--red-->
</LinearLayout>
<LinearLayout
android:layout_width="match_parent"
android:layout_height="0dp"
android:layout_weight="1"
android:orientation="horizontal">
<EditText
android:id="@+id/box_6"
android:layout_width="0dp"
android:layout_height="wrap_content"
android:layout_weight="1"
android:hint="@string/edit_task"
android:inputType="textCapSentences"
android:maxLength="32"
android:padding="10dp"
android:saveEnabled="true" />
<Button
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_gravity="end"
android:text="@string/button_send" />
<!--red-->
</LinearLayout>
如您所说,需要更多工作的更好解决方案是使用 screenHeight/7
计算高度主要有两个原因:
1. 在包含EditText 和Button 的Linearlayout 中设置android:layout_weight="1"
。
2. 在此 EditText 中设置 android:layout_height="match_parent"
,使其与父级一样高。
然后布局代码将是这样的:
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical">
<LinearLayout
android:layout_width="match_parent"
android:layout_height="0dp"
android:layout_weight="1"
android:orientation="horizontal">
<EditText
android:id="@+id/box_0"
android:layout_weight="1"
android:layout_width="0dp"
android:layout_height="match_parent"
android:saveEnabled="true"
android:inputType="textCapSentences"
android:hint="hello"
android:maxLength="32"
android:padding="10dp" />
<Button
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="test"
android:layout_gravity="end|center_vertical" />
<!--red-->
</LinearLayout>
<EditText
android:id="@+id/box_1"
android:layout_weight="1"
android:layout_width="match_parent"
android:layout_height="0dp"
android:saveEnabled="true"
android:inputType="textCapSentences"
android:maxLength="32"
android:padding="10dp" />
<EditText
android:id="@+id/box_2"
android:layout_weight="1"
android:layout_width="match_parent"
android:layout_height="0dp"
android:saveEnabled="true"
android:inputType="textCapSentences"
android:maxLength="32"
android:padding="10dp" />
<EditText
android:id="@+id/box_3"
android:layout_weight="1"
android:layout_width="match_parent"
android:layout_height="0dp"
android:saveEnabled="true"
android:inputType="textCapSentences"
android:maxLength="32"
android:padding="10dp" />
<EditText
android:id="@+id/box_4"
android:layout_weight="1"
android:layout_width="match_parent"
android:layout_height="0dp"
android:saveEnabled="true"
android:inputType="textCapSentences"
android:maxLength="32"
android:padding="10dp" />
<EditText
android:id="@+id/box_5"
android:layout_weight="1"
android:layout_width="match_parent"
android:layout_height="0dp"
android:saveEnabled="true"
android:inputType="textCapSentences"
android:maxLength="32"
android:padding="10dp" />
<EditText
android:id="@+id/box_6"
android:layout_weight="1"
android:layout_width="match_parent"
android:layout_height="0dp"
android:saveEnabled="true"
android:inputType="textCapSentences"
android:maxLength="32"
android:padding="10dp" />
预览图片:
希望对你有帮助!
试试这个:
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="0dp"
android:layout_weight="1"
android:orientation="horizontal">
<EditText android:id="@+id/box_0"
android:layout_weight="1"
android:layout_width="0dp"
android:layout_height="match_parent"
android:hint="@string/edit_task"
android:saveEnabled="true"
android:inputType="textCapSentences"
android:maxLength="32"
android:padding="10dp"/>
<Button
android:layout_width="wrap_content"
android:layout_height="match_parent"
android:text="@string/button_send"
android:layout_gravity="end"/>
<!--red-->
</LinearLayout>
你应该让你的 horizontal Linear Layout
与其他 Edit text
匹配,这就是为什么我将 layout_height
更改为 0dp 并且我还添加了 1 的 layout weight
。假设他与您的其他 Edit text
相同。另外,我将 Edit Text
中的 layout_height
更改为 "match_parent"
。所有其余代码应保持不变。