我的应用程序底部有一个编辑文本。我想在收到触摸事件时始终实现这一点,软键盘出现将整个窗口滚动到顶部,以便我的 EditText 保持可见。
问题是有时窗口根本不滚动,编辑文本仍然隐藏在软键盘后面。奇怪的是,在那些时刻,如果我按下任何东西或与窗口中的其他元素交互,显然它会刷新或类似的东西,然后它会正确滚动到顶部,让我看到编辑文本。
我尝试了不同的东西,这是我的最终代码:
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:background="@android:color/black">
<my.Custom_Edit_Text
android:id="@+id/my_custom_edit_text"
style="@style/my_custom_edit_text_Style"
android:layout_width="wrap_content"
android:layout_height="match_parent"
android:layout_centerInParent="true"
android:maxLength="@integer/data_title_max_length"
android:text="@string/my_custom_edit_text_default"
android:selectAllOnFocus="true"
android:focusable="true"
android:focusableInTouchMode="true"
android:cursorVisible="true"
android:inputType="text"/>
这是我的 Custom_Edit_Text 代码,我在其中处理 onTouch 事件:
setOnTouchListener(new OnTouchListener() {
@Override
public boolean onTouch(View v, MotionEvent event) {
requestFocus();
}
return false;
}
});
我还在 Manifest 文件中设置了这个属性:
android:windowSoftInputMode="stateHidden|adjustPan"