Fra*_*gle 42 android scrollview autoscroll android-edittext
如果没有我找到的出色解决方案,这似乎是一个常见问题.目标是停止ScrollView从自动滚动到EditText具有焦点的(或任何视图).
你有一堆视图(Buttons,TextViews等)ScrollView,其中一个是EditText.点击后说出一个按钮ScrollView,ScrollView向下滚动到EditText(关闭屏幕).这是不可取的,因为您不希望其他元素滚动离开屏幕.
现在,我可以通过在屏幕中首先显示其他可聚焦元素来阻止这种情况发生ScrollView.但是,一般问题仍然存在.用户手动向下滚动EditText,输入一些数字,然后向上滚动到顶部(EditText现在关闭屏幕),他们点击一个按钮ScrollView,猜猜是什么?在ScrollView下降到织补滚动EditText.
我正在考虑扩展ScrollView和覆盖那里的一些方法findFocusableViewInBounds,但我有一种感觉,我只会让自己陷入更多麻烦.
如果可以的话请帮忙.
我已经玩了很多东西,例如EditText在我的顶部有一个0高度ScrollView,将Next Focusable元素属性添加到其他项目中ScrollView等等.我想一个"hack"可能会让EditText虚拟或者失去焦点.手动键盘隐藏或东西.
tho*_*8wp 36
经过一段时间的努力解决这个问题之后,我找到了一个似乎没有太难看的解决方案.首先,确保所有ViewGroup(直接)包含你的EditText已descendantFocusability设置为"在后代之前",focusable设置为"true"并focusableInTouchMode设置为"true".这不是它ScrollView本身,而是你所拥有各种视图的布局.接下来添加一个onTouchListener就ScrollView可以从EditText触摸时移除焦点,如下所示:
ScrollView scroll = (ScrollView)findViewById(R.id.scrollView1);
scroll.setOnTouchListener(new OnTouchListener() {
@Override
public boolean onTouch(View v, MotionEvent event) {
if (myEditText.hasFocus()) {
myEditText.clearFocus();
}
return false;
}
});
Run Code Online (Sandbox Code Playgroud)
告诉我,如果这不能解决它.应该发生的是布局获得焦点而不是焦点EditText,因此不应该进行滚动.
小智 22
只需在linearlayout顶部创建一个空视图
<View android:layout_width="fill_parent" android:id="@+id/focus_view" android:layout_height="0dp" android:focusable="true" android:focusableInTouchMode="true"><requestFocus/></View>
Run Code Online (Sandbox Code Playgroud)
单线解决了这个问题
我有同样的问题.有一个技巧我用来处理这个问题:
public void onClick(View v) {
button.requestFocusFromTouch(); //prevents from loosing focus and scrolling view down
....
}
Run Code Online (Sandbox Code Playgroud)
问题不在于java代码,而是在清单代码上.
在AndroidManifest.xml中为Activity添加一个属性:
<activity android:name=".MyActivity" android:windowSoftInputMode="adjustPan"> </activity>
Run Code Online (Sandbox Code Playgroud)
小智 7
通过添加2个参数:
android:focusable="true"
android:focusableInTouchMode="true"
Run Code Online (Sandbox Code Playgroud)
那里有Main布局.
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:id="@+id/layMain"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:background="@color/background"
android:focusable="true"
android:focusableInTouchMode="true">
Run Code Online (Sandbox Code Playgroud)
这EditText将不会自动聚焦.
| 归档时间: |
|
| 查看次数: |
45660 次 |
| 最近记录: |