EditText 横屏时被遮挡,不可以输入。
这里修改为点击后全屏输入。
<EditText
android:id="@+id/hostname"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:hint="@string/ip_hint"
android:maxLength="128"
android:maxLines="1"
android:editorExtras="@xml/input_fullscreen"
android:inputType="textNoSuggestions"
/>
input_fullscreen.xml
<?xml version="1.0" encoding="utf-8"?>
<extra xmlns:android="http://schemas.android.com/apk/res/android"
android:name="fs_internal"
android:value="true"
/>
android:editorExtras//设置文本的额外的输入数据。
frameworks/base/core/java/android/content/res/Resources.java
public void parseBundleExtras(XmlResourceParser parser, Bundle outBundle)
throws XmlPullParserException, IOException {
int outerDepth = parser.getDepth();
int type;
while ((type=parser.next()) != XmlPullParser.END_DOCUMENT
&& (type != XmlPullParser.END_TAG || parser.getDepth() > outerDepth)) {
if (type == XmlPullParser.END_TAG || type == XmlPullParser.TEXT) {
continue;
}
if (type == XmlPullParser.START_DOCUMENT) {
continue;
}
String nodeName = parser.getName();
if (nodeName.equals("extra")) {
parseBundleExtra("extra", parser, outBundle);
XmlUtils.skipCurrentTag(parser);
} else {
XmlUtils.skipCurrentTag(parser);
}
}
}
frameworks/base/core/java/android/inputmethodservice/InputMethodService.java
public void updateFullscreenMode() {
boolean isFullscreen = mShowInputRequested && onEvaluateFullscreenMode_internal();
...
}
private boolean onEvaluateFullscreenMode_internal() {
if (!isFullscreenInternal()) {
return onEvaluateFullscreenMode();
}
return true;
}
private final static String KEY_FS_INTERNAL = "fs_internal";
private boolean isFullscreenInternal() {
// 默认处理,如果不是需要全屏显示的情况,不需要做后边的判断
// 这部分代码与 onEvaluateFullscreenMode 保持一致
Configuration config = getResources().getConfiguration();
if (config.orientation != Configuration.ORIENTATION_LANDSCAPE) {
return false;
}
if (mInputEditorInfo != null
&& (mInputEditorInfo.imeOptions & EditorInfo.IME_FLAG_NO_FULLSCREEN) != 0) {
return false;
}
// 开始判断
if (mInputEditorInfo == null ||
mInputEditorInfo.extras == null) {
return false;
}
Bundle bundle = mInputEditorInfo.extras;
Log.d("vigi", "onEvaluateFullscreenMode_internal imeOptions = 0x"
+ Integer.toHexString(mInputEditorInfo.imeOptions)
+ ", packageName = " + mInputEditorInfo.packageName
+ ", extras = " + bundle);
return bundle.getBoolean(KEY_FS_INTERNAL);
}