Android: Resize only parts of view with soft keyboard on screen(Android:使用屏幕上的软键盘仅调整部分视图的大小)
问题描述
我在 ImageView 顶部有一个带有 Edittext 字段的视图.当键盘出现时,我希望窗口调整大小,以便 EditText 不再被键盘隐藏.在 AndroidManifest 文件中,我声明了 android:windowSoftInputMode="adjustResize"
并调整了屏幕大小,但问题是我希望不调整 ImageView 的大小.如何使 ImageView 不受影响?
I have a view with a Edittext field on top of an ImageView. When the keyboard comes up I want the window to resize so that EditText is no longer hidden by the keyboard. In the AndroidManifest file I declared android:windowSoftInputMode="adjustResize"
and the screen is resized but the issue is that I want the ImageView to not be re-sized.
How can I make the ImageView unaffected?
我可以只用 ImageView 来扩展一个额外的布局,还是调整大小仍然会影响它?
Could I inflate an additional layout with just the ImageView or will the resize still affect it?
推荐答案
完整的解决方案涉及几个关键点
The full solution involves a few key points
- 使用
RelativeLayout
,这样Views
可以设置成相互重叠 - 使用
android:layout_alignParentBottom="true"
将 - 在您的清单中使用
android:windowSoftInputMode="adjustResize"
,以便在键盘弹出时Window
的底部会发生变化(如您所述) - 把
ImageView
放在一个ScrollView
里面,这样ImageView
就可以比Window
大,然后禁用使用ScrollView#setEnabled(false)
在
EditText
与 Windows
的底部对齐ScrollView
上滚动- Use
RelativeLayout
, so thatViews
can be setup to overlap one another - Align the
EditText
with the bottom of theWindows
usingandroid:layout_alignParentBottom="true"
- Use
android:windowSoftInputMode="adjustResize"
in your manifest, so that the bottom of theWindow
changes when the keyboard pops up (as you mentioned) - Put the
ImageView
inside aScrollView
so that theImageView
can be larger than theWindow
, and disable scrolling on theScrollView
by usingScrollView#setEnabled(false)
这是布局文件
<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="com.so3.MainActivity">
<ScrollView
android:id="@+id/scroll"
android:layout_width="wrap_content"
android:layout_height="wrap_content">
<ImageView
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:adjustViewBounds="true"
android:src="@drawable/stickfigures"/>
</ScrollView>
<EditText
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:layout_alignParentBottom="true"
android:background="@android:color/holo_blue_bright"
android:text="Please enter text"
android:textSize="40sp"
android:gravity="center_horizontal"/>
</RelativeLayout>
这是我的活动
package com.so3;
import android.app.Activity;
import android.os.Bundle;
import android.widget.ScrollView;
public class MainActivity extends Activity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
ScrollView sv = (ScrollView)findViewById(R.id.scroll);
sv.setEnabled(false);
}
}
我的安卓清单
<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android" package="com.so3" >
<application
android:allowBackup="true"
android:icon="@drawable/ic_launcher"
android:label="@string/app_name"
android:theme="@style/AppTheme" >
<activity
android:name="com.so3.MainActivity"
android:windowSoftInputMode="adjustResize"
android:label="@string/app_name" >
<intent-filter>
<action android:name="android.intent.action.MAIN" />
<category android:name="android.intent.category.LAUNCHER" />
</intent-filter>
</activity>
</application>
</manifest>
我的解决方案的屏幕截图
Screen shots of my solution
这篇关于Android:使用屏幕上的软键盘仅调整部分视图的大小的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持编程学习网!
本文标题为:Android:使用屏幕上的软键盘仅调整部分视图的大小
基础教程推荐
- 如何在没有IB的情况下将2个按钮添加到右侧的UINavigationbar? 2022-01-01
- 在 gmail 中为 ios 应用程序检索朋友的朋友 2022-01-01
- 如何在 UIImageView 中异步加载图像? 2022-01-01
- 如何让对象对 Cocos2D 中的触摸做出反应? 2022-01-01
- UIWebView 委托方法 shouldStartLoadWithRequest:在 WKWebView 中等效? 2022-01-01
- 如何在 iPhone 上显示来自 API 的 HTML 文本? 2022-01-01
- Android:对话框关闭而不调用关闭 2022-01-01
- android 应用程序已发布,但在 google play 中找不到 2022-01-01
- Kivy Buildozer 无法构建 apk,命令失败:./distribute.sh -m “kivy"d 2022-01-01
- 当从同一个组件调用时,两个 IBAction 触发的顺序是什么? 2022-01-01