2016-05-12 65 views
0

我使用的是標準Viewpager自定義PageAdapter。Android的 - 訪問的TextView裏面ViewPager

如何訪問Viewpager的TextView,更改onPageSelected()的字體顏色?

編輯1:ViewPager監聽

final ViewPager vp = (ViewPager) findViewById(R.id.a2viewpager); 
     vp.addOnPageChangeListener(new ViewPager.OnPageChangeListener() { 
      public void onPageScrollStateChanged(int arg0) { 

      } 
      public void onPageScrolled(int arg0, float arg1, int arg2) { 
       vp.getParent().requestDisallowInterceptTouchEvent(true); 
      } 
      public void onPageSelected(final int currentPage) { 
       ImageButton leftNav = (ImageButton) findViewById(R.id.a2left_nav); 
       ImageButton rightNav = (ImageButton) findViewById(R.id.a2right_nav); 
       int lastIdx = vpAadapter.getCount() - 1; 


       if (receiptPool.get(currentPage).contains("_(Canceled)") == true){ 
        vp.setBackgroundColor(ContextCompat.getColor(mContext, R.color.colorRed)); 
       } 
       else { 
        vp.setBackgroundColor(ContextCompat.getColor(mContext, R.color.colorMainTextBackground)); 
       } 


      } 
     }); 

編輯1:自定義適配器

public class CustomPagerAdapter extends PagerAdapter { 

    Context mContext; 
    private Vector<View> pages; 
    private activity1 act1; 
    private activity2 act2; 
    private Intent intent; 

    public CustomPagerAdapter(Context context, Vector<View> pages) { 
     super(); 
     this.act1 = new activity1(); 
     this.act2 = new activity2(); 
     this.mContext=context; 
     this.pages=pages; 
    } 


    @Override 
    public Object instantiateItem(final ViewGroup container, final int CurrentPage) { 
     View page = pages.get(CurrentPage); 

     page.setOnTouchListener(new View.OnTouchListener() { 
      /******/ 

     }); 

     container.addView(page); 
     return page; 
    } 


    @Override 
    public int getCount() { 
     return pages.size(); 
    } 

    @Override 
    public boolean isViewFromObject(View view, Object object) { 
     return view.equals(object); 
    } 

    @Override 
    public void destroyItem(ViewGroup container, int position, Object object) { 
     container.removeView((View) object); 
    } 

    @Override 
    public int getItemPosition(Object object) { 
     // Seems to be required as a workaround. 
     return POSITION_NONE; 
    } 
} 

感謝

+0

你能提供的源代碼 –

+0

@vinodh庫馬爾我加入了一些代碼,THX。 –

回答

0

由於您使用自定義適配器,這意味着您的適配器膨脹中的所有項目在viewPager中。因此請檢查您的適配器,找到充氣的xml文件,然後更改文本顏色,或者在適配器內的getViewinstantiateItem方法中以編程方式執行此操作。但它更好,如果我們看到您的代碼

+0

我添加了自定義適配器和Viewpager偵聽器的代碼。 –

+0

@LouisLee我看到你的代碼,但你想更新的文本視圖在哪裏?正如我看到這個代碼是胡言亂語 - 或者我不明白它。 'this.act1 = new activity1();'是什麼意思?什麼樣的對象呢,活動?如果是這樣,請找一個很好的教程,並檢查一下viewPager適配器的工作原理 - 然後你會明白 –

0

Viewpager必須包含幾個片段,首先你必須找到片段。

下面的代碼顯示了訪問一個TextView當前顯示的片段:

DemoObjectFragment frag1 = (DemoObjectFragment)mViewPager.getAdapter().instantiateItem(mViewPager, mViewPager.getCurrentItem()); 

frag1.textview.setVisibility(View.VISIBLE); 
+0

我已經將代碼添加到了我的文章中,請解釋如何將你的代碼應用到我的案例中 –