我有一个由4个图像组成的图像滑块。我想在这些图像上放置不同的文本视图?

问题描述:

下面是我使用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的基础。

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 –

您拥有带ImageView和TextView的布局文件。对于ViewPager的每个项目,您使用图像数组中的图像。对TextView执行相同的操作 - 创建文本数组并在适配器中找到您的TextView并设置正确的文本。 Bosco Sabin的示例演示了您需要做什么。