gpt4 book ai didi

android - ScrollView 内的可滚动多行 TextView(不涉及触摸交互)

转载 作者:太空宇宙 更新时间:2023-11-03 10:42:45 26 4
gpt4 key购买 nike

我创建了一个 ScrollView ,中间有一个 EditText,它是多行(可滚动)。当编辑该 View 并添加超出允许高度的行时,它会按预期滚动。但是,整个容器的父 ScrollView 也会像跟随文本一样滚动。

    <ScrollView
p1:minWidth="25px"
p1:minHeight="25px"
p1:layout_width="match_parent"
p1:layout_height="match_parent"
p1:background="#F7F3DE"
p1:id="@+id/scrollview">
<RelativeLayout
p1:layout_width="match_parent"
p1:layout_height="match_parent"
p1:clickable="true"
p1:focusableInTouchMode="true"
p1:id="@+id/realtiveLayout">
<EditText
p1:id="@+id/editText"
p1:focusableInTouchMode="true"
p1:layout_width="match_parent"
p1:layout_height="150dp"
p1:hint="Comments"
p1:background="#00000000"
p1:textSize="16sp"
p1:textColor="#555555"
p1:gravity="top"
p1:minLines="5"
p1:maxLines="5"
p1:inputType="textCapSentences|textMultiLine"
p1:scrollHorizontally="false"
p1:layout_marginTop="5dp"
p1:textColorHint="#A9A9A9" />
</RelativeLayout>
</ScrollView>

有没有人看到或知道这个问题的解决方案?

(注意:这不是我已经理解的如何通过触摸滚动一个而不是另一个的问题。这是一个在 EditText 中键入时主 ScrollView 移动的问题,即使文本没有变低而是滚动。

最佳答案

这里有一个答案: https://stackoverflow.com/a/28180281/3956566

使用这个 Managing Touch Events in a ViewGroup

每个子触摸都需要提供一个拦截,将父触摸事件返回为 false。在使用子元素时禁用父触摸事件。您可以通过在您的 java 中创建一个 onInterceptTouchEvent(MotionEvent ev) 来做到这一点。

@Override
public boolean onInterceptTouchEvent(MotionEvent ev) {
/*
* This method JUST determines whether we want to intercept the motion.
* If we return true, onTouchEvent will be called and we do the actual
* scrolling there.
*/
// ...
// In general, we don't want to intercept touch events. They should be
// handled by the child view.
return false;
}

编辑此答案由

提供

https://stackoverflow.com/users/498468/carl-odonnell

应该有帮助:

https://stackoverflow.com/a/5090420/3956566触摸文本字段时禁用 ScrollView 。

// Get the ScrollView
final ScrollView myScroll = (ScrollView) findViewById(R.id.display_scrollview);


// Disable Scrolling by setting up an OnTouchListener to do nothing
myScroll.setOnTouchListener( new OnTouchListener(){
@Override
public boolean onTouch(View v, MotionEvent event) {
return true;
}
});

// Enable Scrolling by removing the OnTouchListner
tvDisplayScroll.setOnTouchListener(null);

关于android - ScrollView 内的可滚动多行 TextView(不涉及触摸交互),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30653268/

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