2

我有一個ViewPager,可以滑過多個全屏幕照片。每張照片都有一個標題ImageViewTextView合併。我試圖根據點擊操作隱藏/顯示照片上的TextView標題。具有相同ID /標記的多個TextViews

問題:我目前使用findViewById()找到ViewPager的每個頁面內TextView,因爲有多個照片/字幕共享相同的佈局,它只是返回的第一個TextView ID,從而隱藏/顯示功能僅適用於第一張照片標題,而不適用於其他部分。

問題:我如何讓它適用於所有TextView的?

謝謝!

+0

發佈一些會讓我們很好地理解你的問題。 – GrIsHu 2013-02-26 07:27:59

+0

@Grishu說實話,並沒有試圖表示什麼,這不是一個調試問題。如果你閱讀OP,這更像是一個'如何做'的問題。我可以發佈代碼,但它只是'onClick()'函數中'findViewById'的幾條典型行。謝謝。 – jerrytouille 2013-02-26 07:40:09

+0

做一件事情爲圖像和文字視圖(爲其標題)做一個單獨的佈局,並將它們包含到您的不同viewpager佈局。這將幫助你製作單身證件。檢查這個並讓我知道它是否解決了你的問題 – 2013-02-26 10:48:33

回答

0

我做到了!方法如下:

  1. 在每個ViewPager中都有一個片段,通常包含一個ImageView,它是其主View組件。
  2. 因爲我已經跟蹤了每個片段中的ImageView OnClickListener並傳回到Activity,所以我在Activity中有一個OnClick(View v)方法。
  3. OnClick(View v)中,我使用(View) getParent()獲取當前ImageView的父視圖以獲取當前頁面的ViewPager父容器。
  4. 一旦你獲得了父視圖,您可以使用(TextView) parent.findViewById()

獎金找到其子的TextView ID:代碼:

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); 
    ... 

完成!

0

如果您將PageListener添加到ViewPager,則可以獲取當前選擇的視圖。 這將使您能夠獲取當前頁面中的TextView

檢查this問題和接受的答案,以瞭解如何實施PageListener

+0

我試過這個,但問題是雖然我有效地管理了ViewPager中每個視圖的位置,但視圖本身的ID不會改變,它們都具有相同的ID。因此,當我通過id選擇視圖並隱藏它時,只有第一個工作。 – jerrytouille 2013-03-01 01:41:01

0

您可以設置標籤,您的意見是這樣的:

textView.setContentDescription("MyTag"); 

然後,以便找到與該標記你需要調用所有的觀點:

ArrayList<View> outputViews = new ArrayList<>(); 
mViewPager.findViewsWithText(outputViews, "MyTag", FIND_VIEWS_WITH_CONTENT_DESCRIPTION); 
相關問題