gpt4 book ai didi

Android:使多行编辑文本可滚动,在垂直 ScrollView 中禁用

转载 作者:太空宇宙 更新时间:2023-11-03 11:37:19 24 4
gpt4 key购买 nike

我正在开发一个应用程序,我在其中构建了一个点。

根据我的应用要求,我在 xml 中创建了水平 ScrollView ,然后在 .java 中创建了垂直 ScrollView :

// Vertical Scroll view in Linear layout
ScrollView scrollView = new ScrollView(this);
scrollView.setLayoutParams(new LayoutParams(LayoutParams.MATCH_PARENT, LayoutParams.MATCH_PARENT));

然后我以编程方式创建了一个 TableView 并将其添加到 ScrollView 中。我创建了多行编辑文本并将其禁用,因为我想在运行时设置文本并将其作为一行添加到 TableView 中..

EditText editText = new EditText(this);
editText.setId(1);
editText.setLayoutParams(new TableLayout.LayoutParams(LayoutParams.MATCH_PARENT, LayoutParams.MATCH_PARENT,0f));
editText.setInputType(InputType.TYPE_TEXT_FLAG_MULTI_LINE);
editText.setGravity(Gravity.TOP|Gravity.LEFT);
editText.setHint("Comment");
editText.setSingleLine(false);
editText.setLines(5);
editText.setMaxLines(5);
editText.setText(CommentFromDB);
editText.setEnabled(false);

tableLayout.addView(editText);

// Add table in Horizontal scroll view
scrollView.addView(tableLayout);

现在我想让编辑文本可滚动,这是我通过代码实现的:

editText.setOnTouchListener(new OnTouchListener() {
public boolean onTouch(View view, MotionEvent event) {
if (view.getId() == 1) {
view.getParent().requestDisallowInterceptTouchEvent(true);
switch (event.getAction()&MotionEvent.ACTION_MASK){
case MotionEvent.ACTION_UP:
view.getParent().requestDisallowInterceptTouchEvent(false);
break;
case MotionEvent.ACTION_DOWN:
view.getParent().requestDisallowInterceptTouchEvent(false);
break;
}
}
return false;
}
});

但是编辑文本不容易滚动。我需要流畅的滚动。

如何做到这一点,请指导我。

最佳答案

你只能做一件事。

只需将编辑文本设为可聚焦 false。并应用于触摸监听器。

因此用户无法编辑文本,它将滚动为:

EditText editText = new EditText(this);
editText.setId(1);
editText.setLayoutParams(new TableLayout.LayoutParams(LayoutParams.MATCH_PARENT, LayoutParams.MATCH_PARENT,0f));
editText.setInputType(InputType.TYPE_TEXT_FLAG_MULTI_LINE);
editText.setGravity(Gravity.TOP|Gravity.LEFT);
editText.setHint("Comment");
editText.setSingleLine(false);
editText.setLines(5);
editText.setMaxLines(5);
editText.setText(CommentFromDB);
editTextRemark.setFocusable(false);

将 onTouchListner 应用为:

editTextRemark.setOnTouchListener(touchListener);

OnTouchListener touchListener = new View.OnTouchListener(){
public boolean onTouch(final View v, final MotionEvent motionEvent){
if(v.getId() == 1){
v.getParent().requestDisallowInterceptTouchEvent(true);
switch (motionEvent.getAction() & MotionEvent.ACTION_MASK){
case MotionEvent.ACTION_UP:
v.getParent().requestDisallowInterceptTouchEvent(false);
break;
}
}
return false;
}
};

希望这个回答对您有所帮助。

关于Android:使多行编辑文本可滚动,在垂直 ScrollView 中禁用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23319438/

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