是否有办法使屏幕滚动允许看到文本字段?
我相信你可以通过使用轨迹球来使它滚动,这可能最终通过选择方法以编程的方式实现,但这只是一个想法。我知道轨迹球方法通常可以工作,但是至于具体的方法,并且通过代码使其工作,我不确定。 希望能帮上忙。
您是在问如何控制软键盘打开时可见的内容吗?你可能想玩 WindowSoftInputMode 窗口软输入模式。有关更多讨论,请参见 开发者文件。
为什么不尝试添加一个 ScrollView 来包装您想要滚动的内容呢。下面是我是如何做到这一点,其中我实际上离开了顶部的标题,不滚动,而对话框窗口小部件(特别是 EditText)滚动时,你打开软键盘。
<LinearLayout android:id="@+id/HeaderLayout" > <!-- Here add a header or whatever will not be scrolled. --> </LinearLayout> <ScrollView android:id="@+id/MainForm" > <!-- Here add your edittexts or whatever will scroll. --> </ScrollView>
我通常在 ScrollView 中有一个 LinearLayout,但这取决于您。此外,将 Scrollbar 样式设置为 outsideInset 也有帮助,至少在我的设备上是这样。
我遇到了同样的问题,软键盘位于屏幕底部的 EditText 视图之上。我能够通过向 AndroidManifest.xml 文件的相关活动添加一行来找到解决方案。
android:windowSoftInputMode="adjustResize|stateHidden"
这是整个活动标签的样子:
<activity android:name="com.my.MainActivity" android:screenOrientation="portrait" android:label="@string/title_activity_main" android:windowSoftInputMode="adjustResize|stateHidden" > </activity>
这里最重要的值是调整大小。这将改变整个用户界面,为软键盘腾出空间。
我也有同样的问题,试试以下代码:
android:windowSoftInputMode="adjustPan"
将其添加到保存 input. example 的 activity 标记中的 Manifent.xml 中:
<activity android:name=".Activities.InputsActivity" ... android:windowSoftInputMode="adjustPan" />
抱歉重新启动了一个旧线程,但是没有人提到在 EditText 元素中设置 android:imeOptions="flagNoFullscreen"
android:imeOptions="flagNoFullscreen"
你只需要
android:isScrollContainer="true"
来源: http://www.davidwparker.com/2011/08/25/android-fixing-window-resize-and-scrolling/
android:windowSoftInputMode="adjustPan" android:isScrollContainer="true"
适用于 android EditText,但不适用于 webview 或 xwalk 视图。当软键盘在 webview 或 xwalk 视图中隐藏输入时,必须使用 android:windowSoftInputMode="adjustResize"
android:windowSoftInputMode="adjustResize"
将这一行添加到您的相对活动中,其中键盘覆盖在 onCreat ()活动方法中的 edit text.inside。
getWindow().setSoftInputMode(WindowManager.LayoutParams.SOFT_INPUT_STATE_VISIBLE | WindowManager.LayoutParams.SOFT_INPUT_ADJUST_RESIZE);
编辑 AndroidManifest.xml
将此添加到布局文件的根视图中。
android:fitsSystemWindows="true"
仅此而已。
我知道这很老套,但是以上的方法对我都不管用。经过大量的调试,我解决了这个问题。 解决方案是在我的 styles.xml 中将 android:windowTranslucentStatus属性设置为 false
android:windowTranslucentStatus
如果编辑文本字段已被键盘覆盖,请使用以下代码:
EditText= findViewById(R.id.edittext) EditText?.getParent()?.requestChildFocus(EditText,EditText)
如果您希望 光标在聚焦编辑文本中,请在 EditText?.getParent()?.requestChildFocus(EditText,EditText)之后使用 EditText.requestFocus(),这有助于在聚焦编辑文本中获得焦点和光标。
EditText?.getParent()?.requestChildFocus(EditText,EditText)
EditText.requestFocus()
我有同样的问题和搜索的人说,添加 adjustPan,而在我的情况下,adjustResize工作。
adjustPan
adjustResize
<activity android:name=".YOUR.ACTIVITY" ... android:windowSoftInputMode="adjustResize" />
加上
android:gravity="bottom" android:paddingBottom="10dp"
根据编辑文本的大小更改 paddingBottom
上面的解决方案可以很好地工作,但是如果您使用全屏活动(半透明状态栏) ,那么这些解决方案可能无法工作。 因此,对于全屏,在活动上的 onCreate 函数中使用这段代码。
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.KITKAT) { Window w = getWindow(); w.setFlags(WindowManager.LayoutParams.FLAG_LAYOUT_IN_SCREEN , WindowManager.LayoutParams.FLAG_LAYOUT_IN_SCREEN ); getWindow().setFlags(WindowManager.LayoutParams.FLAG_TRANSLUCENT_NAVIGATION, WindowManager.LayoutParams.TYPE_STATUS_BAR); }
例如:
protected void onCreate(Bundle savedInstanceState) { if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.KITKAT) { Window w = getWindow(); w.setFlags(WindowManager.LayoutParams.FLAG_LAYOUT_IN_SCREEN , WindowManager.LayoutParams.FLAG_LAYOUT_IN_SCREEN ); getWindow().setFlags(WindowManager.LayoutParams.FLAG_TRANSLUCENT_NAVIGATION, WindowManager.LayoutParams.TYPE_STATUS_BAR); } super.onCreate(savedInstanceState);