gpt4 book ai didi

android - scrollBy() 不滚动

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

我正在尝试创建一个高度大于显示器(或父级)高度的自定义 View 。此 View 必须是可滚动的。我使用 onTouchEvent 来测量新的手指位置,实际上我得到了我想要的,但我的 View 没有移动。我在互联网上搜索了问题的解决方案,但没有找到合适的答案。这是我的观点

public class SmartScroll extends View{
public SmartScroll(Context context) {
super(context);
}

int count = 0;
int yStart = 0, yEnd = 0;
@Override
public boolean onTouchEvent(MotionEvent event) {
switch(event.getAction()) {
case MotionEvent.ACTION_DOWN:
yStart = (int) event.getY();
break;
case MotionEvent.ACTION_MOVE:
MeasureSpec.toString(getMeasuredHeight());
MeasureSpec.toString(getMeasuredWidth());
count++;
yEnd = (int) event.getY();
scrollBy(0, (yEnd - yStart));
yStart = yEnd;
break;
case MotionEvent.ACTION_UP:
yStart = 0;
yEnd = 0;
break;
}
return true;
}

这就是我在 Activity 中创建它的方式:

public class MyActivity extends Activity {
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
SmartScroll scrollView = new SmartScroll(getApplicationContext()) {
@Override
protected void onMeasure(int widthMeasureSpec, int heightMeasureSpec) {
super.onMeasure(widthMeasureSpec, MeasureSpec.makeMeasureSpec(1500, MeasureSpec.EXACTLY));
}
};
scrollView.setBackgroundDrawable(getResources().getDrawable(R.drawable.gradient));
setContentView(scrollView);
}

请帮我让它工作

最佳答案

很遗憾,我没有找到我的问题的答案。我尝试了一些来自 Internet 的使用 scrollBy()scrollTo() 的工作示例,它们确实有效。所以,我找到了适合我的解决方案。由于无法移动自定义 View 的内容,我决定移动整个 View 。我通过监听 onTouchEvents 并设置我的 View 的新 Y 坐标来做到这一点。设置新 Y 后,我调用 invalidate()

更新:

我终于找到了最初问题的原因。这是我创建自定义 ViewGroup 的方式。我将 ViewGroup 的高度设置为大于其父项的高度,并希望滚动其内容。但是内容与 ViewGroup 的大小相同,因此 scrollBy() 没有发现滚动内容的需要。我所做的是用子项填充我的 ViewGroup 以便内容变得比 View 大,将我的 ViewGroup 测量为 MatchParent scrollBy() 终于开始工作了。

关于android - scrollBy() 不滚动,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25684152/

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