ViewPager 内的 Fragment 中的 EditText 焦点上的视图混淆了
Posted
技术标签:
【中文标题】ViewPager 内的 Fragment 中的 EditText 焦点上的视图混淆了【英文标题】:Views getting mixing up on EditText focus in Fragment inside ViewPager 【发布时间】:2014-01-11 14:16:59 【问题描述】:当我将包含EditText
的Fragment
放入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
如何从使用 Fragment 的 ViewPager2 获得用户点击?
android ViewPager+Fragment 如何在ViewPager的Activity中获取Fragment中的控件对象