垂直LinearLayout中的水平LinearLayouts

时间:2015-05-15 08:00:21

标签: android android-layout android-edittext android-linearlayout android-button

我想要一些带右侧按钮的EditTexts。现在我只是让Edittexts用0dp技巧填充父级。如果我添加按钮,EditText的高度将使用wrap_content缩小。如果我执行match_parent,则会在整个屏幕上填充一个EditText。

RelativeLayout无法正常工作,因为您无法以与LinearLayout相同的方式使其与父级匹配。

我想到获得屏幕高度,然后将布局高度设置为1/7(因为我有7个EditTexts)。合理?

<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

看第二个如何比其余的更大以补偿,第一个更小?

3 个答案:

答案 0 :(得分:0)

为什么不在那里添加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 :(得分:0)

主要有两个原因:
1.在Linearlayout中设置android:layout_weight="1",其中包含EditText和Button 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" />

预览图片:
希望它能帮到你!

答案 2 :(得分:0)

试试这个:

<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并添加layout weight 1的原因。它&# 39;假设他与你的其他Edit text相同。我还将layout_height中的Edit Text更改为"match_parent"。所有其余代码应保持不变。