ListView 项目隐藏在 EditText 后面。需要 whatsapp 喜欢聊天 activity
ListView items hide behind the EditText. Need whatsapp like chat activity
我在实现布局时遇到问题。每当我单击编辑文本时,软输入键盘就会出现并隐藏列表视图项,我需要的是每当弹出软键盘并且如果列表视图的最后一项可见时,它应该位于编辑文本上方,如果它不可见,则列表应保持原样(与 whatsapp 中的方式相同),这是我的布局代码
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
xmlns:app="http://schemas.android.com/apk/res-auto"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:background="@color/bg_other" >
<include
android:id="@+id/actionbar_toolbar"
layout="@layout/toolbar" />
<ListView
android:id="@+id/lv_listView"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:layout_above="@+id/line_separator"
android:layout_below="@+id/actionbar_toolbar"
android:clipToPadding="false"
android:divider="@android:color/transparent"
android:dividerHeight="12dp"
android:paddingBottom="12dp"
android:scrollbars="none"
android:stackFromBottom="true" >
</ListView>
<View
android:id="@+id/line_separator"
android:layout_width="match_parent"
android:layout_height="1dp"
android:layout_marginLeft="10dp"
android:layout_marginRight="10dp"
android:layout_above="@+id/ll_editText"
android:background="#1F000000"/>
<LinearLayout
android:id="@+id/ll_editText"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_alignParentBottom="true"
android:orientation="horizontal"
android:padding="8dp" >
<EditText
android:id="@+id/et_editText"
android:layout_width="0dp"
android:layout_height="wrap_content"
android:layout_gravity="center_vertical"
android:layout_weight="1"
android:hint="@string/message_hint"
android:textCursorDrawable="@drawable/cursor_color"
android:maxLines="4" />
<View
android:layout_width="1dp"
android:layout_height="match_parent"
android:layout_marginLeft="5dp"
android:background="#1F000000"/>
<Button
android:id="@+id/btn_Button_send"
android:layout_width="48dp"
android:layout_height="match_parent"
android:layout_gravity="center_vertical"
android:text="@string/cherry_send"
android:textColor="@color/orange"
android:textSize="24sp"
android:background="@android:color/transparent" />
</LinearLayout>
<Button
android:id="@+id/btn_Button"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_above="@+id/ll_editText"
android:layout_alignParentRight="true"
android:layout_marginBottom="5dp"
android:layout_marginRight="5dp"
android:background="#A0000000"
android:paddingLeft="2dp"
android:paddingRight="2dp"
android:text="2 new messages"
android:textColor="@android:color/white"
android:textSize="14sp"
android:visibility="gone" />
</RelativeLayout>
我在 activity 的清单中使用 window:softInputMode 作为 adjustResize,因为在某些情况下使用 adjustPan 会将 editText 隐藏在软键盘后面。
请建议我如何实现这一目标。提前致谢
像这样尝试 LinearLayou:
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
xmlns:app="http://schemas.android.com/apk/res-auto"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical" >
<ListView
android:id="@+id/lv_listView"
android:layout_width="match_parent"
android:layout_height="0dp"
android:layout_weight="1"
android:clipToPadding="false"
android:divider="@android:color/transparent"
android:dividerHeight="12dp"
android:paddingBottom="12dp"
android:scrollbars="none"
android:stackFromBottom="true" >
</ListView>
<View
android:id="@+id/line_separator"
android:layout_width="match_parent"
android:layout_height="1dp"
android:layout_marginLeft="10dp"
android:layout_marginRight="10dp"
android:background="#1F000000" />
<LinearLayout
android:id="@+id/ll_editText"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:orientation="horizontal"
android:padding="8dp" >
<EditText
android:id="@+id/et_editText"
android:layout_width="0dp"
android:layout_height="wrap_content"
android:layout_gravity="center_vertical"
android:layout_weight="1"
android:hint="text"
android:maxLines="4" />
<View
android:layout_width="1dp"
android:layout_height="match_parent"
android:layout_marginLeft="5dp"
android:background="#1F000000" />
<Button
android:id="@+id/btn_Button_send"
android:layout_width="48dp"
android:layout_height="match_parent"
android:layout_gravity="center_vertical"
android:background="@android:color/transparent"
android:textSize="24sp" />
</LinearLayout>
<Button
android:id="@+id/btn_Button"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginBottom="5dp"
android:layout_marginRight="5dp"
android:background="#A0000000"
android:paddingLeft="2dp"
android:paddingRight="2dp"
android:text="2 new messages"
android:textColor="@android:color/white"
android:textSize="14sp"
android:visibility="gone" />
</LinearLayout>
找到解决方案....
mListView.setTransctiptMode(ListView.TRANSCRIPT_MODE_NORMAL);
成功了:)
我在实现布局时遇到问题。每当我单击编辑文本时,软输入键盘就会出现并隐藏列表视图项,我需要的是每当弹出软键盘并且如果列表视图的最后一项可见时,它应该位于编辑文本上方,如果它不可见,则列表应保持原样(与 whatsapp 中的方式相同),这是我的布局代码
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
xmlns:app="http://schemas.android.com/apk/res-auto"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:background="@color/bg_other" >
<include
android:id="@+id/actionbar_toolbar"
layout="@layout/toolbar" />
<ListView
android:id="@+id/lv_listView"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:layout_above="@+id/line_separator"
android:layout_below="@+id/actionbar_toolbar"
android:clipToPadding="false"
android:divider="@android:color/transparent"
android:dividerHeight="12dp"
android:paddingBottom="12dp"
android:scrollbars="none"
android:stackFromBottom="true" >
</ListView>
<View
android:id="@+id/line_separator"
android:layout_width="match_parent"
android:layout_height="1dp"
android:layout_marginLeft="10dp"
android:layout_marginRight="10dp"
android:layout_above="@+id/ll_editText"
android:background="#1F000000"/>
<LinearLayout
android:id="@+id/ll_editText"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_alignParentBottom="true"
android:orientation="horizontal"
android:padding="8dp" >
<EditText
android:id="@+id/et_editText"
android:layout_width="0dp"
android:layout_height="wrap_content"
android:layout_gravity="center_vertical"
android:layout_weight="1"
android:hint="@string/message_hint"
android:textCursorDrawable="@drawable/cursor_color"
android:maxLines="4" />
<View
android:layout_width="1dp"
android:layout_height="match_parent"
android:layout_marginLeft="5dp"
android:background="#1F000000"/>
<Button
android:id="@+id/btn_Button_send"
android:layout_width="48dp"
android:layout_height="match_parent"
android:layout_gravity="center_vertical"
android:text="@string/cherry_send"
android:textColor="@color/orange"
android:textSize="24sp"
android:background="@android:color/transparent" />
</LinearLayout>
<Button
android:id="@+id/btn_Button"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_above="@+id/ll_editText"
android:layout_alignParentRight="true"
android:layout_marginBottom="5dp"
android:layout_marginRight="5dp"
android:background="#A0000000"
android:paddingLeft="2dp"
android:paddingRight="2dp"
android:text="2 new messages"
android:textColor="@android:color/white"
android:textSize="14sp"
android:visibility="gone" />
</RelativeLayout>
我在 activity 的清单中使用 window:softInputMode 作为 adjustResize,因为在某些情况下使用 adjustPan 会将 editText 隐藏在软键盘后面。 请建议我如何实现这一目标。提前致谢
像这样尝试 LinearLayou:
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
xmlns:app="http://schemas.android.com/apk/res-auto"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical" >
<ListView
android:id="@+id/lv_listView"
android:layout_width="match_parent"
android:layout_height="0dp"
android:layout_weight="1"
android:clipToPadding="false"
android:divider="@android:color/transparent"
android:dividerHeight="12dp"
android:paddingBottom="12dp"
android:scrollbars="none"
android:stackFromBottom="true" >
</ListView>
<View
android:id="@+id/line_separator"
android:layout_width="match_parent"
android:layout_height="1dp"
android:layout_marginLeft="10dp"
android:layout_marginRight="10dp"
android:background="#1F000000" />
<LinearLayout
android:id="@+id/ll_editText"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:orientation="horizontal"
android:padding="8dp" >
<EditText
android:id="@+id/et_editText"
android:layout_width="0dp"
android:layout_height="wrap_content"
android:layout_gravity="center_vertical"
android:layout_weight="1"
android:hint="text"
android:maxLines="4" />
<View
android:layout_width="1dp"
android:layout_height="match_parent"
android:layout_marginLeft="5dp"
android:background="#1F000000" />
<Button
android:id="@+id/btn_Button_send"
android:layout_width="48dp"
android:layout_height="match_parent"
android:layout_gravity="center_vertical"
android:background="@android:color/transparent"
android:textSize="24sp" />
</LinearLayout>
<Button
android:id="@+id/btn_Button"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginBottom="5dp"
android:layout_marginRight="5dp"
android:background="#A0000000"
android:paddingLeft="2dp"
android:paddingRight="2dp"
android:text="2 new messages"
android:textColor="@android:color/white"
android:textSize="14sp"
android:visibility="gone" />
</LinearLayout>
找到解决方案....
mListView.setTransctiptMode(ListView.TRANSCRIPT_MODE_NORMAL);
成功了:)