处理软键盘和加权视图

时间:2015-12-05 14:21:57

标签: android android-layout

我已经有这个问题了很长一段时间,但我还没有找到任何解决方案。

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

<include
    layout="@android:layout/list_content"
    android:layout_width="match_parent"
    android:layout_height="0dp"
    android:layout_weight="10"/>

<LinearLayout
    android:layout_width="match_parent"
    android:layout_height="0dp"
    android:layout_weight="1"
    android:minHeight="@dimen/message_et_min_height"
    android:background="@color/primaryColor"
    android:orientation="horizontal">

    <EditText
        android:id="@+id/message_edit"
        android:layout_width="0dp"
        android:layout_height="match_parent"
        android:layout_weight="10" />

    <ImageButton
        android:id="@+id/send_message_button"
        android:layout_width="@dimen/send_button_size"
        android:layout_height="@dimen/send_button_size"
        android:layout_weight="1"
        android:layout_gravity="center"
        android:background="@null"
        android:src="@mipmap/ic_send_black_24dp"/>
</LinearLayout>

</LinearLayout>

我使用layout_weight来调整视图大小。但是,当打开软键盘时会产生问题,因为它会调整屏幕大小,并且由于权重参数(screenshots),我的一些视图会被挤压得太多。我已尝试调整清单中的android:windowSoftInputMode参数,结果为:

  • adjustPan:作为我布局的一部分的ListView在旧设备上出错,仅显示ListView的一部分
  • adjustNothing:完全隐藏布局的文本输入部分
  • adjustResize:挤压布局的某些部分(见屏幕截图)
  • adjustUnspecified:与adjustResize
  • 相同

我该怎么做才能解决这个问题?

1 个答案:

答案 0 :(得分:0)

我认为在您的情况下不需要加权视图。您可以使用相对布局,这很容易。我认为你的问题将得到解决。