use*_*897 5 android android-layout
我在水平滚动视图中添加了线性布局,并在布局中添加了一些文本视图.是否有可能在此布局中获得可见的孩子.
这段代码得到了所有孩子,但我想看到(仅显示)孩子:
final HorizontalScrollView scroll = (HorizontalScrollView)findViewById(R.id.horizontalScrollView1);
LinearLayout linearLayout = ((LinearLayout)scroll.findViewById(R.id.linearLayout1));
int chilrenNum = linearLayout.getChildCount();
Run Code Online (Sandbox Code Playgroud)
好吧,经过一番搜索后,我找到了这个答案来监听滚动事件。在 Android 中实现滚动事件监听器。onScrollChanged
这个想法是在你的活动中覆盖ScrollView
并跟踪滚动视图的可见部分。
这样做,您可以通过如下代码轻松获取可见视图:
int currentPosition = lastXPosition; // lastXPosition gets updated from scroll event
int layoutWidth = linearLayout.getWidth();
Display display = getWindowManager().getDefaultDisplay();
Point size = new Point();
display.getSize(size);
int width = size.x;
int childWidth = layoutWidth/linearLayout.getChildCount();
int firstVisibleXPos = currentPosition - width/2; // currentPosition will be in the middle of the screen
int lastVisibleXPos = currentPosition + width/2;
int indexOfFirstVisible = firstVisibleXPos/childWidth;
int indexOfLastVisible = lastVisibleXPos/ childWidth;
Run Code Online (Sandbox Code Playgroud)
上面的所有代码都假设子视图大小是固定的。如果您使用可变子尺寸,您需要首先获取它们的宽度并跟踪它,然后根据父视图中的索引和位置计算可见性。
归档时间: |
|
查看次数: |
2734 次 |
最近记录: |