我有ViewPager
可以浏览多张全屏照片。每张照片都有一个与ImageView
合并的TextView
标题。我正在尝试根据点击操作隐藏/显示照片上的TextView
标题。
问题:目前我正在使用findViewById()
在TextView
的每个页面中查找ViewPager
,因为有多个照片/标题共享相同的布局,它只返回第一个TextView
ID,因此隐藏/显示功能仅适用于第一张照片标题,但不适用于其余照片。
问题:如何让它适用于所有TextView
?
谢谢!
答案 0 :(得分:0)
如果您向PageListener
添加ViewPager
,则可以选择当前视图。
这样您就可以在当前页面中获取TextView
。
检查this问题和接受的答案,了解如何实施PageListener
。
答案 1 :(得分:0)
我做到了!方法如下:
ViewPager
内都有一个片段,通常包含一个ImageView,它是它的主要View组件。ImageView OnClickListener
并传回了活动,因此我在活动中有一个OnClick(View v)
方法。OnClick(View v)
中,我使用(View) getParent()
获取当前ImageView的父视图以获取ViewPager父容器(当前页面)。(TextView) parent.findViewById()
奖金:代码:
public void onClick(View v) {
// since each pager includes an ImageView and a TextView
// get the current pager which is the parent of the current ImageView
View currentPage = (View) v.getParent();
// find the TextView within the current page
mCaption = (TextView) currentPage.findViewById(R.id.caption);
...
完成!
答案 2 :(得分:0)
您可以通过以下方式为视图设置标记:
textView.setContentDescription("MyTag");
然后,为了找到所有带有该标记的视图,您需要调用:
ArrayList<View> outputViews = new ArrayList<>();
mViewPager.findViewsWithText(outputViews, "MyTag", FIND_VIEWS_WITH_CONTENT_DESCRIPTION);