【问题标题】:Add text description under each image in image viewpager在图像查看器中的每个图像下添加文本描述
【发布时间】:2012-11-28 17:54:15
【问题描述】:

由于厨房类已弃用,所以我尝试用 viewpager 类替换它,我已经创建了我的 image viewpager 并且工作得很好。

现在我尝试在每张图片下添加文字描述,我在谷歌上搜索了很多没有结果,我尝试使用 LayoutInflater自定义布局强> 但什么都没有结束,它不显示文本。

注意:这是第一次使用viewpager并尝试自定义它,所以我下面的代码试图膨胀布局并使用viewpager自定义它,可能是错误的或需要更多调整,coz没有这方面的经验。

任何建议将不胜感激,谢谢。

我的代码:

ImagePager:

 public class ImagePager extends Activity {

@Override
public void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_main);

    ImagePagerAdapter adapter = new ImagePagerAdapter(this, imageArra);
    ViewPager myPager = (ViewPager) findViewById(R.id.myimagepager);
    myPager.setAdapter(adapter);
    myPager.setCurrentItem(0);}

      private int imageArra[] = { R.drawable.a, R.drawable.b, R.drawable.c,
                       R.drawable.d, R.drawable.e, R.drawable.f,
                                 R.drawable.g, R.drawable.h, R.drawable.i, 
                                 R.drawable.j, R.drawable.k};}

ImagePagerAdapter:

  public class ImagePagerAdapter extends PagerAdapter {

Activity activity;
int imageArray[];

public ImagePagerAdapter(Activity act, int[] imgArra) {
    imageArray = imgArra;
    activity = act;   }

public int getCount() {
    return imageArray.length;   }

public Object instantiateItem(View collection, int position) {
LayoutInflater inflater = (LayoutInflater)collection.getContext().
          getSystemService (Context.LAYOUT_INFLATER_SERVICE);
    View layout = inflater.inflate(R.layout.custom_pager, null);

    layout.findViewById(R.id.caption);

 ImageView view = new ImageView(activity);                      
    view.setPadding(5, 25, 5, 5);
    view.setScaleType(ScaleType.FIT_START);
    view.setBackgroundColor(Color.RED);
    ((ViewPager) collection).addView(view, 0);
    return view;   }

@Override
public void destroyItem(View arg0, int arg1, Object arg2) {
    ((ViewPager) arg0).removeView((View) arg2);   }

@Override
public boolean isViewFromObject(View arg0, Object arg1) {
    return arg0 == ((View) arg1);   }

@Override
public Parcelable saveState() {
    return null;   }
                }

【问题讨论】:

    标签: java android android-viewpager layout-inflater


    【解决方案1】:

    这里

    public Object instantiateItem(View collection, int position) {
    LayoutInflater inflater = (LayoutInflater)collection.getContext().getSystemService
                 (Context.LAYOUT_INFLATER_SERVICE);
        View layout = inflater.inflate(R.layout.custom_pager, null);
    
        layout.findViewById(R.id.caption);
    
     ImageView view = new ImageView(activity);                      
        view.setPadding(5, 25, 5, 5);
        view.setScaleType(ScaleType.FIT_START);
        view.setBackgroundColor(Color.RED);
        ((ViewPager) collection).addView(view, 0);
        return view;   }
    

    cutome_pager 中像这样设计您的视图。

    <?xml version="1.0" encoding="utf-8"?>
    

    <ImageView
        android:id="@+id/gallery_imageView"
        android:layout_width="fill_parent"
        android:layout_height="fill_parent" />
    
    <TextView
        android:id="@+id/gallery_imageView_dsc"
        android:layout_width="fill_parent"
        android:layout_height="wrap_content"
        android:layout_alignParentBottom="true"
        android:text="Hello...." />
    

    public Object instantiateItem(View collection, int position) {
    LayoutInflater inflater = (LayoutInflater)collection.getContext().getSystemService
                 (Context.LAYOUT_INFLATER_SERVICE);
        View layout = inflater.inflate(R.layout.custom_pager, null);
    
                        ImageView im=(ImageView) layout.findViewById(R.id.gallery_imageView);
                        im.setBackgroundColor(Color.RED);
                        TextView dsc=(TextView) layout.findViewById(R.id.gallery_imageView_dsc);
                        ((ViewPager) collection).addView(layout, 0);
                        return layout;   }
    

    【讨论】:

    • @M Mohsin Naeem 非常感谢您的重播,但是当运行应用程序时,它只显示没有图像的文本视图,因为黑屏显示底部的文本只有任何建议,谢谢
    • 您需要将图像分配给您的ImageView。你可以使用im.setBackgroundColor(Color.RED);
    • @M Mohsin Naeem ImageView view = new ImageView(activity);这也行不通,亲爱的任何建议
    • 亲爱的mageView view = new ImageView(activity);,因为您没有将此添加到任何View。查看我的编辑
    • @M Mohsin Naeem 我亲爱的 im.setBackgroundColor(Color.RED);将显示红色背景而不是图像
    【解决方案2】:

    instantiateItem() 方法中,您创建一个ImageView 并将其添加到查看寻呼机并返回它。在这个方法中,创建一个垂直方向的LinearLayout,然后创建一个ImageView和一个TextView作为描述,然后将ImageViewTextView添加到LineaLayout并添加LinearLayout以查看寻呼机并返回LinearLayout..

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-06-16
      • 2013-12-23
      • 1970-01-01
      • 2020-05-30
      • 2023-03-05
      相关资源
      最近更新 更多