在底部用编辑文本组织布局?

时间:2015-11-28 02:01:54

标签: android xml android-layout android-linearlayout android-relativelayout

我想用3 LinearLayouts制作一个布局。在第二个LinearLayout我会有一个ListView和第三个LinearLayout我会在底部有一个EditTextButton。这是我的尝试:

<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:fresco="http://schemas.android.com/apk/res-auto"
    android:orientation="vertical"
    android:layout_width="match_parent"
    android:layout_height="match_parent">

    <LinearLayout
        android:id="@+id/view_post"
        android:layout_width="fill_parent"
        android:layout_height="200dp"
        android:background="@color/com_facebook_blue">

        <TextView
            android:layout_width="fill_parent"
            android:layout_height="wrap_content"
            android:id="@+id/view_status"/>

    </LinearLayout>

        <LinearLayout
            android:id="@+id/view_comments"
            android:layout_below="@+id/view_post"
            android:layout_width="match_parent"
            android:layout_height="250dp">

            <ListView
                android:id="@+id/lv_comments_feed"
                android:layout_width="fill_parent"
                android:layout_height="wrap_content">
            </ListView>

        </LinearLayout>

        <LinearLayout
            android:layout_below="@+id/view_comments"
            android:id="@+id/send_message"
            android:layout_width="match_parent"
            android:layout_height="50dp"
            android:layout_alignParentBottom="true"
            android:orientation="horizontal" >

            <EditText
                android:id="@+id/write_comment"
                android:layout_width="0dp"
                android:layout_height="wrap_content"
                android:layout_gravity="center_vertical|center_horizontal"
                android:layout_weight="5"
                android:gravity="top|left"
                android:inputType="textMultiLine"
                android:scrollHorizontally="false" />

            <Button
                android:id="@+id/send_comment"
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:layout_gravity="center_vertical|center_horizontal"
                android:gravity="center"
                android:text="send"
                android:textAppearance="?android:attr/textAppearanceMedium" />
        </LinearLayout>

</RelativeLayout>

现在设计看起来不错,但是当我在手机上加载应用程序时,我遇到了两个问题:

  1. 我不想硬编码LinearLayout高度。我调查了layout_weight,但似乎没有这些layout_weights工作而没有遇到下面的第二个问题:

  2. 当我点击EditText时,EditText被隐藏,即使我已在我的活动中声明android:windowSoftInputMode="adjustResize|stateHidden",我也不确定为什么会这样。此外,EditTextButton并非直接位于屏幕底部,这也是我想要的。感谢任何帮助,谢谢!

2 个答案:

答案 0 :(得分:1)

您不需要将listview添加为线性布局的子项。并避免fill_parent&amp;使用match_parent。如果第一个线性布局仅用于textview,那么不要在linearlayout中使用它。或者只使用wrap_content而不是特定的layout_height

我在这里做了一些改变,希望它能起作用

<?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:orientation="vertical">

<LinearLayout
    android:id="@+id/view_post"
    android:layout_width="match_parent"
    android:layout_height="200dp"
    android:background="#222dc9">

    <TextView
        android:id="@+id/view_status"
        android:layout_width="match_parent"
        android:layout_height="wrap_content" />

</LinearLayout>


<ListView
    android:id="@+id/listView"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:layout_above="@+id/send_message"
    android:layout_below="@id/view_post"
   ></ListView>


<LinearLayout
    android:id="@+id/send_message"
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    android:padding="5dp"
    android:layout_alignParentBottom="true"

    android:orientation="horizontal">

    <EditText
        android:id="@+id/write_comment"
        android:layout_width="0dp"
        android:layout_height="wrap_content"
        android:layout_gravity="center_vertical|center_horizontal"
        android:layout_weight="5"
        android:gravity="top|left"
        android:inputType="textMultiLine"
        android:scrollHorizontally="false" />

    <Button
        android:id="@+id/send_comment"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_gravity="center_vertical|center_horizontal"
        android:gravity="center"
        android:text="send"
        android:textAppearance="?android:attr/textAppearanceMedium" />
</LinearLayout>

</RelativeLayout>

并在Manifest中使用活动名称为

android:windowSoftInputMode="adjustPan"

答案 1 :(得分:0)

<RelativeLayout 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"
tools:context=".MainActivity">

<RelativeLayout
    android:id="@+id/view_post"
    android:layout_width="match_parent"
    android:background="@color/material_grey_300"
    android:padding="5dp"
    android:layout_height="wrap_content">

    <TextView
        android:id="@+id/view_status"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="hello" />

</RelativeLayout>

<RelativeLayout
    android:id="@+id/view_comments"
    android:layout_above="@+id/send_message"
    android:layout_below="@+id/view_post"
    android:layout_width="match_parent"
    android:background="@color/material_deep_teal_200"
    android:padding="10dp"
    android:layout_height="match_parent">

    <ListView
        android:id="@+id/lv_comments_feed"
        android:layout_width="match_parent"
        android:layout_height="wrap_content">
    </ListView>

</RelativeLayout>

<LinearLayout
    android:id="@+id/send_message"
    android:background="@color/material_blue_grey_800"
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    android:orientation="horizontal"
    android:layout_alignParentBottom="true">

    <EditText
        android:id="@+id/write_comment"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:layout_weight="1"
        android:inputType="textMultiLine"
        android:scrollHorizontally="false" />

    <Button
        android:id="@+id/send_comment"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:padding="3dp"
        android:layout_weight="1"
        android:text="send" />
</LinearLayout>
</RelativeLayout>