android - 在包含 ScrollView 的 Activity 中强制执行 adjustPan

标签 android android-layout

我的布局是这样的:

<RelativeLayout>
    <RelativeLayout>
    </RelativeLayout>
    <ViewFlipper>
        <ScrollView>
            <LinearLayout>
                <EditText />
            </LinearLayout>
        </ScrollView>
    </ViewFlipper>
    <RelativeLayout>
    </RelativeLayout>
</RelativeLayout>

当专注于中间的 EditText 时,软键盘会按预期弹出,但是它总是会调整布局大小,即使我有 android:windowSoftInputMode="adjustPan"在 list 中。

调整大小的问题是只有 ScrollView 缩小了,它上面和下面的 RelativeLayouts 完好无损,这几乎可以完全遮住 EditText。

我试过在显示键盘时隐藏 RelativeLayouts(这是另一个悲伤的故事),但 adjustPan 听起来更合适。但是,它对此 Activity 没有影响。

如何在存在 ScrollView 的情况下强制 adjustPan 工作?

更新:

所以不会让我回答我自己的问题,但解决方案是设置 android:isScrollContainer="false"在 ScrollView 上。

最佳答案

好问题,大多数开发人员做同样的事情,但这不是您需要做的正确方法。这会对您有所帮助。

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


<ViewFlipper>
    <ScrollView
      android:layout_width="fill_parent"
       android:layout_height="fill_parent"
       >
        <LinearLayout
          android:layout_width="fill_parent"
           android:layout_height="wrap_content"
           android:orientation="vertical"
        >
            <EditText />
        </LinearLayout>
    </ScrollView>
</ViewFlipper>
<LinearLayout> 

您应该将 LinearLayout 的方向设置为垂直或水平 View ,这样您就不会产生调整问题。这非常简单。

关于android - 在包含 ScrollView 的 Activity 中强制执行 adjustPan,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6114993/

相关文章:

Android,各向异性过滤?

android - DDMS 不在设备上显示程序数据

java - 从android中的当前 Activity 填充下一个 Activity 的UI

javascript + phoneGap - 如何检测通话中的时间

我键入时的android EditText格式

android - 不同标记的不同信息窗口

java - 自定义布局未显示

android - 在之前定义的特定位置将布局添加到另一个布局

Android - 如何根据设备在 xml 中设置可见性?

java - Android 中 4 个图标的动态布局,这些图标之间必须保持合理的距离