在我的应用中,有一个带有三个fragments
的标签式活动。第一个片段具有用于创建新任务的表单,第二个片段具有所有已保存任务的列表,第三个片段将在从第二个片段中的列表中选择时显示对任务的注释。第三个fragment
也应该像聊天活动一样,在您输入评论时发布评论并点按发送按钮。第三个fragment
的XML布局如下:
<?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="@android:color/darker_gray"
android:orientation="vertical"
tools:context="com.example.ishita.assigntasks.CommentsFragment">
<TextView
android:id="@+id/frag_task_details"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:background="#dd55ff"
android:padding="10dp" />
<ListView
android:id="@+id/frag_comment_list"
android:layout_width="match_parent"
android:layout_height="0dp"
android:layout_weight="1"
android:transcriptMode="normal" />
<LinearLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:orientation="horizontal"
android:background="@android:color/white">
<EditText
android:id="@+id/frag_msg_edit"
android:layout_width="0dp"
android:layout_height="wrap_content"
android:inputType="textMultiLine"
android:layout_weight="1" />
<ImageButton
android:id="@+id/frag_send_btn"
style="?android:attr/buttonStyleSmall"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_weight="0"
android:background="@android:color/background_light"
android:contentDescription="@string/send_btn"
android:src="@android:drawable/ic_menu_send" />
</LinearLayout>
</LinearLayout>
正如您所看到的,有一个TextView
和一个ListView
以及另一个LinearLayout
。它的外观如下(紫色条是TextView
):
以下是它的实际外观:
TextView
显示在ListView
之上,但LinearLayout
没有显示。它在那里。如果我在最外面的android:layout_marginBottom="20dp"
上LinearLayout
,它会显示,但ActionBar
会向上滚动并与通知栏重叠,以便ActionBar
上的标题和通知栏上的通知同时可见,也不清晰。
我搜索了很多,这似乎是一个常见的问题,但没有一个解决方案帮助了我。相信我,我尝试了所有我能找到的东西。我尝试使用FrameLayout
代替最外面的RelativeLayout
将整个内容包裹在LinearLayout
中,使用两个LinearLayout
s - 一个来封装TextView
和ListView
以及另一个包裹EditText
和ImageButton
等,但没有任何内容可以显示LinearLayout
下面的ListView
底部。我甚至尝试在片段启动时将焦点设置在EditText
上,以便键盘显示并且我可以输入,但即使这样也没有帮助。
注意:另一方面,如果我在activity
上使用完全相同的布局,则底部LinearLayout
会完全按照原样显示。
我无法找到错误。请帮忙!
答案 0 :(得分:1)
看起来您的工具栏会向下推动片段布局而不会降低其高度。我不知道为什么会这样(这里没有根布局代码)。
作为一种解决方法,您可以将片段布局底部边距设置为?attr/actionBarSize
答案 1 :(得分:0)
由于您在listview布局中给出了layout_weight 1,因此它占用了整个可用空间。为了摆脱你必须给出一些静态高度或以正确的方式使用layout_weight
<ListView
android:id="@+id/frag_comment_list"
android:layout_width="match_parent"
android:layout_height="500dp"
android:transcriptMode="normal" />
或尝试这样
<?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="@android:color/darker_gray"
android:orientation="vertical"
tools:context="com.example.ishita.assigntasks.CommentsFragment">
<TextView
android:id="@+id/frag_task_details"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:background="#dd55ff"
android:padding="10dp" />
<LinearLayout
android:layout_width="match_parent"
android:layout_height="0dp"
android:layout_weight="1"
android:orientation="vertical"
android:background="@android:color/white">
<ListView
android:id="@+id/frag_comment_list"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:transcriptMode="normal" />
</LinearLayout>
<LinearLayout
android:layout_width="match_parent"
android:layout_height="0dp"
android:layout_weight="1"
android:orientation="horizontal"
android:background="@android:color/white">
<EditText
android:id="@+id/frag_msg_edit"
android:layout_width="0dp"
android:layout_height="wrap_content"
android:inputType="textMultiLine"
android:layout_weight="1" />
<ImageButton
android:id="@+id/frag_send_btn"
style="?android:attr/buttonStyleSmall"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_weight="0"
android:background="@android:color/background_light"
android:contentDescription="@string/send_btn"
android:src="@android:drawable/ic_menu_send" />
</LinearLayout>
</LinearLayout>
答案 2 :(得分:0)
所有
感谢您的回复。我现在通过反复试验找到了一种解决方法,并认为我应该为面临同样问题的其他人发布答案。我在内部android:layout_marginBottom="50dp"
(包含评论栏的{ - 1}}和LinearLayout
)上设置了EditText
。不知何故,这会正确设置布局,并且片段在Lollipop和Jellybean OS中都能正常运行。我没有在其他操作系统版本上测试过。
答案 3 :(得分:0)
首先,您应该阅读this,layout_weight
是什么以及它是如何运作的。
您已将layout_weight
指定为ListView
作为1
,这意味着它涵盖了整个高度。只需将其更改为0.7
或任何您想要的比例(小于1
)即可解决问题。
<ListView
android:id="@+id/frag_comment_list"
android:layout_width="match_parent"
android:layout_height="0dp"
android:layout_weight="0.7"
android:transcriptMode="normal" />