gpt4 book ai didi

java - 为 Fragment 中的更多 editTexts 设置 OnFocusChangeListener

转载 作者:行者123 更新时间:2023-11-30 05:11:51 29 4
gpt4 key购买 nike

我想为我拥有的每个 EditText(在我的例子中是 VerifiedEditText)设置自动滚动。我是这样做的,但我认为这不是应该的方式(看起来太复杂、太乱、太长),你能推荐我让它更简单吗?我仍在自学,因此非常感谢对附加代码的解释。谢谢

@Override
public void onFocusScroll() {

final ScrollView mScrollView;
mScrollView = (ScrollView) rootView.findViewById(R.id.register_scroll);

final VerifiedEditText editText0 = (VerifiedEditText) rootView.findViewById(R.id.register_ticket);
final VerifiedEditText editText1 = (VerifiedEditText) rootView.findViewById(R.id.register_sektor);
final VerifiedEditText editText2 = (VerifiedEditText) rootView.findViewById(R.id.register_row);
final VerifiedEditText editText3 = (VerifiedEditText) rootView.findViewById(R.id.register_seat);

editText0.setOnFocusChangeListener(new View.OnFocusChangeListener() {
@Override
public void onFocusChange(View v, boolean hasFocus) {
if (hasFocus) {
mScrollView.post(new Runnable() {
public void run() {
mScrollView.smoothScrollTo(0, mScrollView.getTop());
}
});
}
}
});

editText1.setOnFocusChangeListener(new View.OnFocusChangeListener() {
@Override
public void onFocusChange(View v, boolean hasFocus) {
if (hasFocus) {
mScrollView.post(new Runnable() {
@Override
public void run() {
mScrollView.smoothScrollTo(0, mScrollView.getBottom());
}
});
}
}
});

editText2.setOnFocusChangeListener(new View.OnFocusChangeListener() {
@Override
public void onFocusChange(View v, boolean hasFocus) {
if (hasFocus) {
mScrollView.post(new Runnable() {
@Override
public void run() {
mScrollView.smoothScrollTo(0, mScrollView.getBottom());
}
});
}
}
});

editText3.setOnFocusChangeListener(new View.OnFocusChangeListener() {
@Override
public void onFocusChange(View v, boolean hasFocus) {
if (hasFocus) {
mScrollView.post(new Runnable() {
@Override
public void run() {
mScrollView.smoothScrollTo(0, mScrollView.getBottom());
}
});
}
}
});
}

最佳答案

     implement class by `View.OnFocusChangeListener`

并将 Focus Listener 设置为类的当前实例,因为将其视为 View.OnFocusChangeListener 实例并覆盖 onFocusChange() 方法

v.getTop() 返回当前焦点 View 的顶部位置

 editText0.setOnFocusChangeListener(this);
editText1.setOnFocusChangeListener(this);
editText2.setOnFocusChangeListener(this);
editText3.setOnFocusChangeListener(this);




@Override
public void onFocusChange(View v, boolean hasFocus) {
if (hasFocus) {

mScrollView.post(new Runnable() {
public void run() {
mScrollView.smoothScrollTo(0, v.getTop());
}
});




}
}
}

关于java - 为 Fragment 中的更多 editTexts 设置 OnFocusChangeListener,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53593838/

29 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com