软键盘隐藏了Fragment中的ListView元素

时间:2016-01-25 12:05:57

标签: android listview android-softkeyboard

我有一个包含ListView的Fragment,当我选择键盘显示的第二个EditText时,我将三个EditText和一个Spinner添加到一个Spinner,但我无法将列表视图滚动到列表视图中的最后两个剩余元素键盘可见。

几乎就像列表视图无法识别软键盘可见,最后两个剩余元素仍在软键盘后面。

以下是相关观点的屏幕截图和XML。

AndroidManifest:

<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$PlaceholderFragment"
android:background="@color/generic_grey">

<ListView
    android:id="@+id/form_base_listview"
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    android:divider="@null"
    android:dividerHeight="0dp"
    android:descendantFocusability="afterDescendants"
    />
</RelativeLayout>

列表视图:

<?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="wrap_content"
android:background="@color/white"
android:paddingBottom="5dp">

<TextView
    android:id="@+id/form_multi_txt"
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    android:text="@string/testing"
    android:padding="10dp"/>

<EditText
    android:id="@+id/form_multi_edit"
    android:layout_width="fill_parent"
    android:layout_height="100dp"
    android:layout_below="@+id/form_multi_txt"
    android:layout_marginLeft="5dp"
    android:paddingLeft="5dp"
    android:paddingRight="5dp"
    android:background="@drawable/edit_text_background"
    android:layout_toLeftOf="@+id/form_multi_info_btn"
    android:layout_toStartOf="@+id/form_multi_info_btn"
    android:inputType="textMultiLine"/>

<ImageButton
    android:id="@+id/form_multi_info_btn"
    android:layout_width="30dp"
    android:layout_height="30dp"
    android:scaleType="fitStart"
    android:src="@drawable/form_row_info"
    android:background="@android:color/transparent"
    android:layout_below="@+id/form_multi_txt"
    android:layout_alignParentRight="true"
    android:layout_marginRight="10dp"/>

</RelativeLayout>

多行视图:

<?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="wrap_content"
android:background="@color/white"
android:paddingBottom="5dp">

<TextView
    android:id="@+id/form_select_txt"
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    android:text="@string/testing"
    android:padding="10dp"/>

<Spinner
    android:id="@+id/form_select_spinner"
    android:layout_width="fill_parent"
    android:layout_height="44dp"
    android:layout_below="@+id/form_select_txt"
    android:layout_marginLeft="5dp"
    android:spinnerMode="dialog"
    android:layout_toLeftOf="@+id/form_select_info_btn"
    android:layout_toStartOf="@+id/form_select_info_btn"
    android:background="@android:drawable/btn_dropdown"
    />

<ImageButton
    android:id="@+id/form_select_info_btn"
    android:layout_width="30dp"
    android:layout_height="30dp"
    android:scaleType="fitStart"
    android:src="@drawable/form_row_info"
    android:background="@android:color/transparent"
    android:layout_below="@+id/form_select_txt"
    android:layout_alignParentRight="true"
    android:layout_marginRight="10dp"/>

</RelativeLayout>

微调:

<?xml version="1.0" encoding="utf-8"?>
<TextView xmlns:android="http://schemas.android.com/apk/res/android"
android:id="@+id/textViewSpinnerItem"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="@string/hello_world"
style="@style/SpinnerTextViewItem"
/>

微调器内的视图:

subprocess.Popen(apt-get numpy)

完整视图: Complete View

使用键盘查看:(无法滚动查看最后两个元素) Keyboard visable

2 个答案:

答案 0 :(得分:1)

将所有标记放在实际布局中,并将相对布局放在ScrollView中。由于ScrollView只需要一个孩子。

<?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="wrap_content"
android:background="@color/white"
android:paddingBottom="5dp">

<ScrollView
android:layout_width="match_parent"
android:layout_height="wrap_content">

<RelativeLayout
android:layout_width="match_parent"
android:layout_height="wrap_content">

<TextView
    android:id="@+id/form_multi_txt"
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    android:text="@string/testing"
    android:padding="10dp"/>

<EditText
    android:id="@+id/form_multi_edit"
    android:layout_width="fill_parent"
    android:layout_height="100dp"
    android:layout_below="@+id/form_multi_txt"
    android:layout_marginLeft="5dp"
    android:paddingLeft="5dp"
    android:paddingRight="5dp"
    android:background="@drawable/edit_text_background"
    android:layout_toLeftOf="@+id/form_multi_info_btn"
    android:layout_toStartOf="@+id/form_multi_info_btn"
    android:inputType="textMultiLine"/>

<ImageButton
    android:id="@+id/form_multi_info_btn"
    android:layout_width="30dp"
    android:layout_height="30dp"
    android:scaleType="fitStart"
    android:src="@drawable/form_row_info"
    android:background="@android:color/transparent"
    android:layout_below="@+id/form_multi_txt"
    android:layout_alignParentRight="true"
    android:layout_marginRight="10dp"/>
</RelativeLayout>
</ScrollView>
</RelativeLayout>

答案 1 :(得分:0)

这是因为一旦软键盘打开并且你没有设置它,你的活动布局需要调整。您需要做的是编辑您的清单并添加

android:windowSoftInputMode="adjustResize"

到右<activity>标记。这是文档中的Handling Input Method Visibility章节,您可能需要阅读以了解可以使用windowSoftInputMode

设置哪些行为