Java 如何检测滚动的是哪个滚动视图
我有一个具有多个滚动视图的视图,所以我的问题是如何检测哪个滚动视图被滚动 例如,如果我有3个垂直滚动视图,如何知道用户滚动哪个滚动 这是我的代码:Java 如何检测滚动的是哪个滚动视图,java,android,Java,Android,我有一个具有多个滚动视图的视图,所以我的问题是如何检测哪个滚动视图被滚动 例如,如果我有3个垂直滚动视图,如何知道用户滚动哪个滚动 这是我的代码: public void fillFormules(List<Category> objectsTextToShow) { LinearLayout layoutItemDetail = (LinearLayout) view.findViewById(R.id.middle); LinearLayout relativeL
public void fillFormules(List<Category> objectsTextToShow)
{
LinearLayout layoutItemDetail = (LinearLayout) view.findViewById(R.id.middle);
LinearLayout relativeLayout = (LinearLayout) view.findViewById(R.id.titles);
LinearLayout layout = new LinearLayout(getActivity());
layout.setLayoutParams(new LayoutParams(LayoutParams.MATCH_PARENT, LayoutParams.MATCH_PARENT));
layout.setOrientation(LinearLayout.HORIZONTAL);
ScrollView scrollView = null;
for (int j = 0; j <objectsTextToShow.size() ; j++){
TextView textCat = new TextView(getActivity());
textCat.setText(Check.Languages(objectsTextToShow.get(j).getName(), LANGUAGE_ID));
textCat.setTextSize(24);
textCat.setLayoutParams(new TableLayout.LayoutParams(LayoutParams.MATCH_PARENT, LayoutParams.MATCH_PARENT, 1f));
textCat.setTextColor(colorUtils.TITLE);
textCat.setGravity(Gravity.CENTER);
relativeLayout.addView(textCat);
textCat.setBackgroundColor(colorUtils.backgroundColor);
LinearLayout parentLayout = new LinearLayout(getActivity());
parentLayout.setLayoutParams(new LayoutParams(LayoutParams.MATCH_PARENT, LayoutParams.MATCH_PARENT, (float) 1.0));
parentLayout.setOrientation(LinearLayout.VERTICAL);
scrollView = new ScrollView(getActivity());
scrollView.setLayoutParams(new LayoutParams(LayoutParams.MATCH_PARENT, LayoutParams.MATCH_PARENT, (float) 1.0));
for (int i = 0; i <objectsTextToShow.get(j).getItems().size() ; i++)
{
TextView textView = new TextView(getActivity());
textView.setTextSize(24);
textView.setText(Check.Languages(objectsTextToShow.get(j).getItems().get(i).getName(), LANGUAGE_ID));
textView.setTextColor(colorUtils.TITLE);
LinearLayout separator = new LinearLayout(getActivity());
separator.setLayoutParams(new LayoutParams(LayoutParams.MATCH_PARENT, 100));
parentLayout.addView(separator);
parentLayout.addView(textView);
}
scrollView.setVisibility(View.VISIBLE);
scrollView.addView(parentLayout);
layout.addView(scrollView);
}
layoutItemDetail.addView(layout);
}
public void fillFormules(列出objectsTextToShow)
{
LinearLayout layoutItemDetail=(LinearLayout)view.findViewById(R.id.middle);
LinearLayout relativeLayout=(LinearLayout)view.findViewById(R.id.titles);
LinearLayout布局=新的LinearLayout(getActivity());
layout.setLayoutParams(新的LayoutParams(LayoutParams.MATCH_父级,LayoutParams.MATCH_父级));
布局。设置方向(线性布局。水平);
ScrollView ScrollView=null;
对于(int j=0;j,无论您想知道它在哪里,您都会在某个回调中,该回调将获得传递给它的视图参数。这就是所讨论的视图,或者可能是View.getParent()
您可以这样做:
mScrollView.getViewTreeObserver().addOnScrollChangedListener(new OnScrollChangedListener() {
@Override
public void onScrollChanged() {
onScrollViewScrolled(mScrollView.getId());
}
});
当有人滚动mScrollView
时,您将收到通知。在回调中,您将获得滚动视图的ID,并将其传递给onScrollViewScrolled
。这样您将知道滚动视图的ID。问题出在scrollview声明中
public void fillFormules(List<Category> objectsTextToShow) {
LinearLayout layoutItemDetail = (LinearLayout) view.findViewById(R.id.middle);
LinearLayout relativeLayout = (LinearLayout) view.findViewById(R.id.titles);
LinearLayout layout = new LinearLayout(getActivity());
layout.setLayoutParams(new LayoutParams(LayoutParams.MATCH_PARENT, LayoutParams.MATCH_PARENT));
layout.setOrientation(LinearLayout.HORIZONTAL);
**ScrollView scrollView = null;**
for (int j = 0; j <objectsTextToShow.size() ; j++){
TextView textCat = new TextView(getActivity());
textCat.setText(Check.Languages(objectsTextToShow.get(j).getName(), LANGUAGE_ID));
textCat.setTextSize(24);
textCat.setLayoutParams(new TableLayout.LayoutParams(LayoutParams.MATCH_PARENT, LayoutParams.MATCH_PARENT, 1f));
textCat.setTextColor(colorUtils.TITLE);
textCat.setGravity(Gravity.CENTER);
relativeLayout.addView(textCat);
textCat.setBackgroundColor(colorUtils.backgroundColor);
LinearLayout parentLayout = new LinearLayout(getActivity());
parentLayout.setLayoutParams(new LayoutParams(LayoutParams.MATCH_PARENT, LayoutParams.MATCH_PARENT, (float) 1.0));
parentLayout.setOrientation(LinearLayout.VERTICAL);
*ScrollView* scrollView = new ScrollView(getActivity());
scrollView.setLayoutParams(new LayoutParams(LayoutParams.MATCH_PARENT, LayoutParams.MATCH_PARENT, (float) 1.0));
for (int i = 0; i <objectsTextToShow.get(j).getItems().size() ; i++)
{
TextView textView = new TextView(getActivity());
textView.setTextSize(24);
textView.setText(Check.Languages(objectsTextToShow.get(j).getItems().get(i).getName(), LANGUAGE_ID));
textView.setTextColor(colorUtils.TITLE);
LinearLayout separator = new LinearLayout(getActivity());
separator.setLayoutParams(new LayoutParams(LayoutParams.MATCH_PARENT, 100));
parentLayout.addView(separator);
parentLayout.addView(textView);
}
scrollView.setVisibility(View.VISIBLE);
scrollView.addView(parentLayout);
layout.addView(scrollView);
}
layoutItemDetail.addView(layout);
}
public void fillFormules(列出objectsTextToShow){
LinearLayout layoutItemDetail=(LinearLayout)view.findViewById(R.id.middle);
LinearLayout relativeLayout=(LinearLayout)view.findViewById(R.id.titles);
LinearLayout布局=新的LinearLayout(getActivity());
layout.setLayoutParams(新的LayoutParams(LayoutParams.MATCH_父级,LayoutParams.MATCH_父级));
布局。设置方向(线性布局。水平);
**ScrollView ScrollView=null**
对于(int j=0;j谢谢,但是我如何获得滚动的滚动视图?我找不到类似的东西:getScrollFromId,它给我相同的id=-1这意味着您没有设置滚动视图的id。您可以换一种方式,将滚动视图实例传递给onScrollViewScrolled()
method。我传递了scroll视图,但只有最后一个滚动被激活并滚动到高度值scrollView.getViewTreeObserver().addOnScrollChangedListener(新ViewTreeObserver.OnScrollChangedListener(){@Override public void onScrollChanged(){onScrollViewScrolled(finalScrollView);}public void onScrollViewScrolled(ScrollView scroll){height=10;scroll.scrollTo(0,height);Log.e(“id:+scroll.getId(),“height:+height”);}}};
在滚动一个视图时,您的目标是滚动所有视图吗?您能给我一个例子吗?是的,如果您解释的话“如何检测哪个滚动视图被滚动”通过显示您的相关代码并指向您想要检测它的代码这是我代码的下一部分:scrollView.getViewTreeObserver().addOnScrollChangedListener(新的ViewTreeObserver.OnScrollChangedListener()){@Override public void onScrollChanged(){onScrollViewScrolled(finalScrollView);}public void onScrollViewScrolled(ScrollView滚动){height=10;//或view.getHeight();scroll.scrollTo(0,height);Log.e(“id:+scroll.getId(),”height:+height); } });
我不明白这个答案。问题和答案中的代码有什么区别?这如何回答关于如何检测哪个滚动的问题?scrollview的声明在循环之外。我敢打赌,只有将其移到内部无法解决问题!无论是否滚动,它都应该以同样的方式工作内部或外部。您没有任何用于检测哪个滚动条被滚动的代码WhatsOver,因此我仍然不知道这是如何解决问题的。我的答案(可能不适用于您)至少有一种方法可以检测哪个滚动条正在移动
public void fillFormules(List<Category> objectsTextToShow) {
LinearLayout layoutItemDetail = (LinearLayout) view.findViewById(R.id.middle);
LinearLayout relativeLayout = (LinearLayout) view.findViewById(R.id.titles);
LinearLayout layout = new LinearLayout(getActivity());
layout.setLayoutParams(new LayoutParams(LayoutParams.MATCH_PARENT, LayoutParams.MATCH_PARENT));
layout.setOrientation(LinearLayout.HORIZONTAL);
**ScrollView scrollView = null;**
for (int j = 0; j <objectsTextToShow.size() ; j++){
TextView textCat = new TextView(getActivity());
textCat.setText(Check.Languages(objectsTextToShow.get(j).getName(), LANGUAGE_ID));
textCat.setTextSize(24);
textCat.setLayoutParams(new TableLayout.LayoutParams(LayoutParams.MATCH_PARENT, LayoutParams.MATCH_PARENT, 1f));
textCat.setTextColor(colorUtils.TITLE);
textCat.setGravity(Gravity.CENTER);
relativeLayout.addView(textCat);
textCat.setBackgroundColor(colorUtils.backgroundColor);
LinearLayout parentLayout = new LinearLayout(getActivity());
parentLayout.setLayoutParams(new LayoutParams(LayoutParams.MATCH_PARENT, LayoutParams.MATCH_PARENT, (float) 1.0));
parentLayout.setOrientation(LinearLayout.VERTICAL);
*ScrollView* scrollView = new ScrollView(getActivity());
scrollView.setLayoutParams(new LayoutParams(LayoutParams.MATCH_PARENT, LayoutParams.MATCH_PARENT, (float) 1.0));
for (int i = 0; i <objectsTextToShow.get(j).getItems().size() ; i++)
{
TextView textView = new TextView(getActivity());
textView.setTextSize(24);
textView.setText(Check.Languages(objectsTextToShow.get(j).getItems().get(i).getName(), LANGUAGE_ID));
textView.setTextColor(colorUtils.TITLE);
LinearLayout separator = new LinearLayout(getActivity());
separator.setLayoutParams(new LayoutParams(LayoutParams.MATCH_PARENT, 100));
parentLayout.addView(separator);
parentLayout.addView(textView);
}
scrollView.setVisibility(View.VISIBLE);
scrollView.addView(parentLayout);
layout.addView(scrollView);
}
layoutItemDetail.addView(layout);
}