如何解决Android开发-具有以下文本的画廊小部件
| 我是android开发的新手,但是我被卡住了。 我想实现图像的滚动列表,并在每个图像下方添加文字。 我正在尝试使用Gallery小部件。我已经成功创建了一个图库,可以从存储卡上的图像列表中加载该图像,但是我无法确定如何在每个图像下放置文本。 这可能吗?画廊可能不是适合此的小部件。 这是我的主窗口代码:package org.touchandgo.speak;
import java.io.File;
import java.io.FilenameFilter;
import android.app.AlertDialog;
import android.content.Context;
import android.content.ContextWrapper;
import android.content.DialogInterface;
import android.net.Uri;
import android.os.Bundle;
import android.os.Environment;
import android.view.View;
import android.view.ViewGroup;
import android.widget.BaseAdapter;
import android.widget.Gallery;
import android.widget.ImageView;
public class SpeakMainWindow extends LicenseCheckActivity
{
boolean mExternalStorageAvailable = false;
boolean mExternalStorageWriteable = false;
private Uri[] mUrls;
String[] mFiles=null;
void showToast(String msg) {
AlertDialog ad = new AlertDialog.Builder(this).create();
ad.setCancelable(false); // This blocks the \'BACK\' button
ad.setMessage(msg);
ad.setButton(\"OK\",new DialogInterface.OnClickListener() {
@Override
public void onClick(DialogInterface dialog,int which) {
dialog.dismiss();
}
});
ad.show();
}
public void onCreate(Bundle icicle)
{
super.onCreate(icicle);
setContentView(R.layout.main);
String state = Environment.getExternalStorageState();
if (Environment.MEDIA_MOUNTED.equals(state)) {
mExternalStorageAvailable = mExternalStorageWriteable = true;
} else if (Environment.MEDIA_MOUNTED_READ_ONLY.equals(state)) {
mExternalStorageAvailable = true;
mExternalStorageWriteable = false;
} else {
mExternalStorageAvailable = mExternalStorageWriteable = false;
}
if (mExternalStorageAvailable)
{
File images = new File ( \"/sdcard/TouchAndGoSpeech\");
showToast (images.getPath());
File[] imagelist = images.listFiles(new FilenameFilter()
{
public boolean accept(File dir,String name)
{
return (name.endsWith(\".jpg\")||name.endsWith(\".png\"));
}
});
mFiles = new String[imagelist.length];
for(int i= 0 ; i< imagelist.length; i++)
{
mFiles[i] = imagelist[i].getAbsolutePath();
}
mUrls = new Uri[mFiles.length];
for(int i=0; i < mFiles.length; i++)
{
mUrls[i] = Uri.parse(mFiles[i]);
}
Gallery g = (Gallery) findViewById(R.id.g_main);
g.setAdapter(new ImageAdapter(this));
g.setFadingEdgeLength(0);
g.setHapticFeedbackEnabled(true);
g.setSpacing(5);
}
}
public class ImageAdapter extends BaseAdapter
{
int mGalleryItemBackground;
public ImageAdapter(Context c) {
mContext = c;
}
public int getCount(){
return mUrls.length;
}
public Object getItem(int position){
return position;
}
public long getItemId(int position) {
return position;
}
public View getView(int position,View convertView,ViewGroup parent){
ImageView i = new ImageView(mContext);
i.setTag(mUrls[position]);
i.setImageURI(mUrls[position]);
i.setScaleType(ImageView.ScaleType.FIT_XY);
i.setLayoutParams(new Gallery.LayoutParams(48,48));
return i;
}
private Context mContext;
}
}
解决方法
您将需要从
ImageAdapter
中修改getView()
方法,以添加一个同时包含ImageView
和TextView
的ѭ3as,而不仅仅是ImageView。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。