2

我有一个ViewPager幻灯片可以通过多张全屏照片。每张照片都有一个标题,该标题ImageViewTextView. 我正在尝试TextView根据点击操作隐藏/显示照片上的标题。

问题:目前我正在使用在每个页面中findViewById()查找,因为有多个共享相同布局的照片/标题,它只返回第一个ID,因此隐藏/显示功能仅适用于第一张照片标题但不适用于其余的部分。TextViewViewPagerTextView

问题:如何使它适用于所有人TextView

谢谢!

4

3 回答 3

0

如果您将 a 添加PageListener到您的ViewPager中,您可以获得当前视图被选中。这将使您能够TextView在当前页面中获取。

检查这个问题和接受的答案,看看如何实现PageListener.

于 2013-02-28T11:25:58.833 回答
0

我做到了!就是这样:

  1. 每个ViewPager片段中都有一个片段,通常包含一个 ImageView,它是它的主要视图组件。
  2. 由于我已经ImageView OnClickListener在每个片段中跟踪并传递回 Activity,因此我在 Activity 中有一个OnClick(View v)方法。
  3. 在 中OnClick(View v),我获取了当前 ImageView 的父视图,(View) getParent()用于获取 ViewPager 父容器(当前页面的)。
  4. 获得父视图后,您可以使用找到它的子 TextView id(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);
    ...

完毕!

于 2013-03-01T04:46:47.017 回答
0

您可以通过这种方式为您的视图设置标签:

textView.setContentDescription("MyTag");

然后为了找到所有带有该标签的视图,您需要调用:

ArrayList<View> outputViews = new ArrayList<>();
mViewPager.findViewsWithText(outputViews, "MyTag", FIND_VIEWS_WITH_CONTENT_DESCRIPTION); 
于 2017-04-22T14:31:54.267 回答