2017-07-28 32 views
0

下面是我使用Viewpager的Image Slider的XML代碼。正如你可以在下面看到的,我已經有一個textview已經出現在所有4張圖片上。我有一個由4個圖像組成的圖像滑塊。我想在這些圖像上放置不同的文本視圖?

<?xml version="1.0" encoding="utf-8"?> 
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" 
    xmlns:app="http://schemas.android.com/apk/res-auto" 
    android:orientation="vertical" 
    android:layout_width="match_parent" 
    android:layout_height="match_parent"> 

    <ImageView 
     android:id="@+id/image_view" 
     android:layout_height="wrap_content" 
     android:layout_width="wrap_content" 
     android:scaleType="centerCrop" 
     /> 

    <TextView 
     android:id="@+id/myImageViewText" 
     android:layout_width="wrap_content" 
     android:layout_height="wrap_content" 
     android:layout_alignLeft="@+id/image_view" 
     android:layout_alignTop="@+id/image_view" 
     android:layout_alignRight="@+id/image_view" 
     android:layout_alignBottom="@+id/image_view" 
     android:layout_margin="1dp" 
     android:gravity="bottom" 
     android:textSize="30dp" 
     android:text="Welcome to DriftFan" 
     android:textStyle="bold" 
     android:textAllCaps="true" 
     android:textColor="@color/colorPrimary"/> 
</RelativeLayout> 

這是我ViewPager XML代碼

 <android.support.v4.view.ViewPager 
     android:id="@+id/view_pager" 
     android:layout_width="fill_parent" 
     android:layout_height="204dp" 
     android:scaleType="centerCrop" 
     ></android.support.v4.view.ViewPager> 

最後這裏是我的類

public class myTimerTask extends TimerTask { 

     @Override 
     public void run() { 

      if (getActivity()== null) { 
       return; 

      } 
      getActivity().runOnUiThread(new Runnable() { 
       @Override 
       public void run() { 


         if (viewPager.getCurrentItem() == 0) { 
          viewPager.setCurrentItem(1); 
         } else if (viewPager.getCurrentItem() == 1) { 
          viewPager.setCurrentItem(2); 
         } else if (viewPager.getCurrentItem() == 2) { 
          viewPager.setCurrentItem(3); 

         } 


       } 


      }); 
     } 
    } 
} 

是否有我的Java類中的一些代碼,我可以手動分配文本查看任何圖像?

public class ViewPagerAdapter extends PagerAdapter { 

    private Context context; 
    private LayoutInflater layoutInflater; 
    private Integer[] images = {R.drawable.img1, R.drawable.img2, R.drawable.img3, R.drawable.img4}; 

    public ViewPagerAdapter(Context context) { 
     this.context = context; 
    } 

    @Override 
    public int getCount() { 
     return images.length; 
    } 

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

    @Override 
    public Object instantiateItem(ViewGroup container, int position) { 

     layoutInflater = (LayoutInflater) context.getSystemService(Context.LAYOUT_INFLATER_SERVICE); 
     View view = layoutInflater.inflate(R.layout.custom_layout, null); 
     ImageView imageView = (ImageView) view.findViewById(R.id.image_view); 
     imageView.setImageResource(images[position]); 

     ViewPager vp = (ViewPager) container; 
     vp.addView(view, 0); 
     return view; 
    } 

    @Override 
    public void destroyItem(ViewGroup container, int position, Object object) { 

     ViewPager vp = (ViewPager)container; 
     View view = (View) object; 
     vp.removeView(view); 



    } 
} 

上面是ViewPager適配器類,這是我的ImageSlidler的基礎。

回答

0
public class ViewPagerAdapter extends PagerAdapter { 

    private Context context; 
    private LayoutInflater layoutInflater; 
    private Integer[] images = {R.drawable.img1, R.drawable.img2, R.drawable.img3, R.drawable.img4}; 
    private String[] texts= {"text1", "text2","text3","text4"}; 
    public ViewPagerAdapter(Context context) { 
     this.context = context; 
    } 

    @Override 
    public int getCount() { 
     return images.length; 
    } 

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

    @Override 
    public Object instantiateItem(ViewGroup container, int position) { 

     layoutInflater = (LayoutInflater) context.getSystemService(Context.LAYOUT_INFLATER_SERVICE); 
     View view = layoutInflater.inflate(R.layout.custom_layout, null); 
     ImageView imageView = (ImageView) view.findViewById(R.id.image_view); 
     TextView tv= (TextView) view.findViewById(R.id.myImageViewText); 
     imageView.setImageResource(images[position]); 
     tv.setText(texts[position]); 

     ViewPager vp = (ViewPager) container; 
     vp.addView(view, 0); 
     return view; 
    } 

    @Override 
    public void destroyItem(ViewGroup container, int position, Object object) { 

     ViewPager vp = (ViewPager)container; 
     View view = (View) object; 
     vp.removeView(view); 



    } 
} 
+0

我在這裏有一個錯誤,tv.setText [texts [position]]; –

+0

tv.setText(texts [position]); - 得到它的工作。謝謝@Bosco Sabin –

0

您擁有帶ImageView和TextView的佈局文件。對於ViewPager的每個項目,您使用圖像數組中的圖像。對TextView執行相同的操作 - 創建文本數組並在適配器中找到您的TextView並設置正確的文本。 Bosco Sabin的示例演示了您需要做什麼。

相關問題