2

ViewPager複数のフルスクリーン写真をスライドするものがあります。ImageView各写真には、とマージされたキャプションがありTextViewます。TextViewクリックアクションに基づいて写真のキャプションを非表示/表示しようとしています。

問題:現在、の各ページ内findViewById()を検索するために使用しています。同じレイアウトを共有する複数の写真/キャプションがあるため、最初のIDのみが返され、非表示/表示機能は最初の写真のキャプションでのみ機能しますが、機能しません。残り。TextViewViewPagerTextView

質問:すべての人にそれを機能させるにはどうすればよいTextViewですか?

ありがとう!

4

3 に答える 3

0

にを追加するPageListenerViewPager、現在選択されているビューを取得できます。TextViewこれにより、現在のページでをフェッチできるようになります。

この質問と受け入れられた回答をチェックして、の実装方法を確認してくださいPageListener

于 2013-02-28T11:25:58.833 に答える
0

やったよ!方法は次のとおりです。

  1. それぞれViewPagerの中にフラグメントがあり、多くの場合、メインの View コンポーネントである ImageView が含まれています。
  2. すでにImageView OnClickListener各フラグメントで を追跡してアクティビティに戻しているので、アクティビティにOnClick(View v)メソッドがあります。
  3. では、(現在のページの) ViewPager 親コンテナーを取得するためにOnClick(View v)使用して、現在の ImageView の親ビューを取得します。(View) getParent()
  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 に答える