心软的大脸猫 · android ...· 1 周前 · |
重感情的黄瓜 · Android ...· 1 周前 · |
腼腆的沙发 · Android ...· 1 周前 · |
温文尔雅的圣诞树 · ZXNavigationBar· 2 月前 · |
憨厚的毛衣 · Flutter多控件滑动事件联动(滑动冲突处 ...· 6 月前 · |
近视的香菜 · Configure alerts | ...· 1 月前 · |
踏实的登山鞋 · 隐私政策-Hosnt-好事达文化传媒有限公司· 2 月前 · |
道上混的野马 · 从类型兼容开始,认识 TypeScript ...· 7 月前 · |
睿智的羊肉串 · 2018年教学成果-太原理工大学光电工程学院· 7 月前 · |
安静的弓箭 · 女人的战争:搬来的男人 (豆瓣)· 10 月前 · |
重感情的黄瓜
1 周前 |
TextView
是 Android 中用于显示文本的 UI 组件。它支持多种文本格式和样式,并且可以响应用户的交互事件,如点击和焦点变化。
TextView
可以显示简单的纯文本或复杂的富文本。
当
TextView
的焦点发生变化时,可能会出现自动滚动到顶部的奇怪行为。
这种行为通常是由于
TextView
的
MovementMethod
设置不当或者焦点变化时的布局重绘导致的。
MovementMethod
确保
TextView
没有设置不必要的
MovementMethod
,例如
LinkMovementMethod
或
ScrollingMovementMethod
。
TextView textView = findViewById(R.id.textView);
textView.setMovementMethod(null); // 如果不需要滚动或链接点击,可以设置为null
在
TextView
的焦点变化监听器中,可以手动控制滚动位置。
textView.setOnFocusChangeListener(new View.OnFocusChangeListener() {
@Override
public void onFocusChange(View v, boolean hasFocus) {
if (hasFocus) {
textView.scrollTo(0, textView.getScrollY()); // 保持当前滚动位置
});
setDescendantFocusability
设置
TextView
的
descendantFocusability
属性,防止子视图获取焦点。
<TextView
android:id="@+id/textView"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:descendantFocusability="beforeDescendants"
android:focusable="true"
android:focusableInTouchMode="true" />
TextView textView = findViewById(R.id.textView);
textView.setMovementMethod(null); // 如果不需要滚动或链接点击,可以设置为null
textView.setOnFocusChangeListener(new View.OnFocusChangeListener() {
@Override
public void onFocusChange(View v, boolean hasFocus) {
if (hasFocus) {
textView.scrollTo(0, textView.getScrollY()); // 保持当前滚动位置
});
通过以上方法,可以有效解决
TextView
在焦点变化时自动滚动到顶部的问题。
重感情的黄瓜 · Android textview奇怪的行为:自动滚动到焦点改变的顶部_UITableView奇怪的滚动行为,导航栏的大标题,顶部的反弹效果当滚动到顶部时自动关闭/抖动 - 腾讯云开发者社区 - 腾讯云 1 周前 |
温文尔雅的圣诞树 · ZXNavigationBar 2 月前 |
踏实的登山鞋 · 隐私政策-Hosnt-好事达文化传媒有限公司 2 月前 |
道上混的野马 · 从类型兼容开始,认识 TypeScript - 知乎 7 月前 |
睿智的羊肉串 · 2018年教学成果-太原理工大学光电工程学院 7 月前 |
安静的弓箭 · 女人的战争:搬来的男人 (豆瓣) 10 月前 |