ViewPager 内的 Fragment 中的 EditText 焦点上的视图混淆了

Posted

技术标签:

【中文标题】ViewPager 内的 Fragment 中的 EditText 焦点上的视图混淆了【英文标题】:Views getting mixing up on EditText focus in Fragment inside ViewPager 【发布时间】:2014-01-11 14:16:59 【问题描述】:

当我将包含EditTextFragment 放入ViewPager 时,我遇到了视图混淆问题。

你可以在 image_1 中看到我的实际布局设计。

案例 1:我将 Fragment 放在 ViewPager 中,然后单击布局中的第一个 EditText 以输入内容。但结果是 image_2。所有View 都混在一起了,因为没有足够的空间容纳所有View。但是对于 android 的实际行为,布局内的所有Views 都应该向上移动并聚焦当前选定的EditText

案例2:我把Fragment直接放到Activity,没有ViewPager。我尝试了同样的事情。(image_3)。我在这里得到了想要的 android 行为。

1) 为什么会这样?2) 我该如何解决这个问题? image_1

image_2

image_3

我的布局代码:

<?xml version="1.0" encoding="utf-8"?>
<FrameLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:tools="http://schemas.android.com/tools"
    android:layout_
    android:layout_
    android:background="@drawable/container_dropshadow" >

    <RelativeLayout
        android:layout_
        android:layout_
        android:layout_margin="@dimen/content_margin"
        android:background="@color/dark_background" >

        <Button
            android:id="@+id/sendButton"
            android:layout_
            android:layout_
            android:layout_alignParentBottom="true"
            android:gravity="center_horizontal"
            android:onClick="send"
            android:text="@string/send" />

        <EditText
            android:id="@+id/descriptionEditText"
            android:layout_
            android:layout_
            android:layout_above="@id/sendButton"
            android:hint="@string/description"
            android:inputType="textMultiLine|textNoSuggestions"
            android:maxLength="500" />

        <EditText
            android:id="@+id/departmentEditText"
            android:layout_
            android:layout_
            android:layout_above="@id/descriptionEditText"
            android:hint="Department"
            android:inputType="textNoSuggestions"
            android:singleLine="true" />

        <EditText
            android:id="@+id/subjectEditText"
            android:layout_
            android:layout_
            android:layout_above="@id/departmentEditText"
            android:hint="Subject"
            android:inputType="textNoSuggestions"
            android:singleLine="true" >

            <requestFocus />
        </EditText>

        <LinearLayout
            android:id="@+id/selectAFileLinearLayout"
            android:layout_
            android:layout_
            android:layout_above="@id/subjectEditText"
            android:layout_margin="8dp"
            android:background="@drawable/bg_browse"
            android:gravity="center_horizontal|center_vertical"
            android:orientation="horizontal" >

            <TextView
                android:id="@+id/fileTextView"
                android:layout_
                android:layout_
                android:layout_marginLeft="4dp"
                android:layout_weight="6"
                android:gravity="center"
                android:padding="2dp"
                android:text="Select a file"
                android:textStyle="italic" />

            <Button
                android:id="@+id/browseFileButton"
                android:layout_
                android:layout_
                android:layout_weight="1"
                android:onClick="getFile"
                android:text="..." />
        </LinearLayout>

        <TextView
            android:id="@+id/messageTextView"
            android:layout_
            android:layout_
            android:layout_above="@id/selectAFileLinearLayout"
            android:layout_marginBottom="@dimen/upload_file_title_margin_bottom"
            android:gravity="center_horizontal"
            android:text="@string/upload_files_message"
            android:textAppearance="?android:attr/textAppearanceMedium"
            android:textColor="#ffffff"
            android:textSize="@dimen/heading_font_size" />
    </RelativeLayout>

</FrameLayout>

【问题讨论】:

【参考方案1】:

在清单中为您的活动添加以下内容

android:windowSoftInputMode="adjustPan"

【讨论】:

以上是关于ViewPager 内的 Fragment 中的 EditText 焦点上的视图混淆了的主要内容,如果未能解决你的问题,请参考以下文章

Android getParentFragment() 在 Fragment 内的 ViewPager 中返回 null

与 viewpager 内的片段的父片段通信

如何从使用 Fragment 的 ViewPager2 获得用户点击?

android ViewPager+Fragment 如何在ViewPager的Activity中获取Fragment中的控件对象

在Viewpager中的一个Fragment中添加一个ViewPager

检测片段内的 ViewPager 选项卡更改