如何在图库中添加关于每个图像的描述

时间:2012-08-16 17:12:50

标签: android android-layout android-intent

我有GalleryView一些照片,我希望TextView随图片而变化。任何人都可以告诉如何在每个图像中添加描述。我是android的新手。 任何帮助或指南

这是我的代码:

XML:

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

<Gallery 
android:id="@+id/Gallery01" 
android:layout_width="fill_parent" 
android:layout_height="wrap_content"></Gallery>
<ImageView 
android:id="@+id/ImageView01" 
android:layout_width="wrap_content" 
android:layout_height="wrap_content"></ImageView>


</LinearLayout>

java:

import android.app.Activity;
import android.content.Context;
import android.content.res.TypedArray;
import android.os.Bundle;
import android.view.View;
import android.view.ViewGroup;
import android.widget.AdapterView;
import android.widget.BaseAdapter;
import android.widget.Gallery;
import android.widget.ImageView;
import android.widget.Toast;
import android.widget.AdapterView.OnItemClickListener;

public class GalleryView extends Activity {
Integer[] pics = {
        R.drawable.antartica1,
        R.drawable.antartica2,
        R.drawable.antartica3,
        R.drawable.antartica4,
        R.drawable.antartica5,
        R.drawable.antartica6,
        R.drawable.antartica7,
        R.drawable.antartica8,
        R.drawable.antartica9,
        R.drawable.antartica10
};
ImageView imageView;

/** Called when the activity is first created. */
@Override
public void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.main);

    Gallery ga = (Gallery)findViewById(R.id.Gallery01);
    ga.setAdapter(new ImageAdapter(this));

    imageView = (ImageView)findViewById(R.id.ImageView01);
    ga.setOnItemClickListener(new OnItemClickListener() {

        public void onItemClick(AdapterView<?> arg0, View arg1, int arg2,
                long arg3) {
            Toast.makeText(getBaseContext(), 
                    "You have selected picture " + (arg2+1) + " of Antartica", 
                    Toast.LENGTH_SHORT).show();
            imageView.setImageResource(pics[arg2]);

        }

    });

}


public class ImageAdapter extends BaseAdapter {

    private Context ctx;
    int imageBackground;

    public ImageAdapter(Context c) {
        ctx = c;
        TypedArray ta = obtainStyledAttributes(R.styleable.Gallery1);
        imageBackground = ta.getResourceId(R.styleable.Gallery1_android_galleryItemBackground, 1);
        ta.recycle();
    }

    public int getCount() {

        return pics.length;
    }

    public Object getItem(int arg0) {

        return arg0;
    }

    public long getItemId(int arg0) {

        return arg0;
    }

    public View getView(int arg0, View arg1, ViewGroup arg2) {
        ImageView iv = new ImageView(ctx);
        iv.setImageResource(pics[arg0]);
        iv.setScaleType(ImageView.ScaleType.FIT_XY);
        iv.setLayoutParams(new Gallery.LayoutParams(150,120));
        iv.setBackgroundResource(imageBackground);
        return iv;
    }

}
}

1 个答案:

答案 0 :(得分:0)

如果您希望TextViewGallery中选择的图片时更改其文字。此TextView将位于Galllery之外,您将在选择图库项目时更改其内容。下面的代码可能会给你一个提示。

XML:

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

<Gallery 
android:id="@+id/Gallery01" 
android:layout_width="fill_parent" 
android:layout_height="wrap_content"></Gallery>
<ImageView 
android:id="@+id/ImageView01" 
android:layout_width="wrap_content" 
android:layout_height="wrap_content"></ImageView>

<TextView 
android:id="@+id/TextView01" 
android:layout_width="wrap_content" 
android:layout_height="wrap_content"
android:layout_below="@+id/ImageView01"></TextView >


</LinearLayout>

在您的java代码中,您必须设置一个onIteSelectedListener()来更新TextView

1)初始化TextView

 TextView textView = (TextView)findViewById(R.id.TextView01);

2)设置onitemSelectedListener()的{​​{1}}:

Gallery

3)你的 ga.setOnItemClickListener(galleryOnItemSelectedListener); 就像:

OnItemSelectedListener()