所以,我一直在为一个项目做 xml 布局,该项目涉及在屏幕上获取水平可滚动的图像行,并且仅使用水平 ScrollView 来完成此操作。和一堆图像按钮。我使用 include 将其放在另一个 xml 布局页面上,然后另一个程序员将动态填充图像。
我的问题是,图库控制对我们有什么好处?我没有做过太多 Java 编程,并且在网上看到过一些关于如何实现此控件的说明,但关于为什么要使用此控件的说明却很少。看起来这个控件主要通过数组通过 Java 插入来工作,但除此之外,我不知道阅读我的创建布局并让其他程序员手动插入自己的图像的方式有什么好处。
另一个相关问题 - 画廊的这些图像是否需要 ImageView ,或者它们可以是图像映射吗?目前它们是图像映射,因为我们希望它们可以访问用户的个人资料等。
谢谢!
最佳答案
图库近乎完美。在我的一个项目中,我确实有一个带有画廊的 LinearLayout:
<Gallery
android:id="@+id/gallery"
android:layout_height="0dip"
android:layout_weight="1"
android:layout_width="fill_parent"
android:spacing="2dip" />
Activity 实现 OnItemClickListener:
public class MyActivity extends Activity implements OnItemClickListener {
数据结构包含所有项目并发送到适配器:
private void processGallery() {
adapter = new MyAdapter(this, containers, appName);
if (adapter != null) {
gallery.setAdapter(adapter);
}
}
@Override
public void onItemClick(final AdapterView<?> adapterView, final View view, final int position, final long id) {
if (containers != null) {
container = containers.get(position);
if (container != null) {
// Handle selected image
}
}
}
适配器是一个普通的 BaseAdapter - 没什么神奇的:
public class MyAdapter extends BaseAdapter {
private ArrayList<Container> containers;
private Context context;
public int getCount() {
return containers.size();
}
public Object getItem(final int position) {
return containers.get(position);
}
public long getItemId(final int position) {
return position;
}
public View getView(final int position, final View contentView, final ViewGroup viewGroup) {
ImageView imageView = new ImageView(context);
Container container = containers.get(position);
if (container != null) {
// Do your image thing here
}
return imageView;
}
public MyAdapter(final Context context, final ArrayList<Container> containers, final String appName) {
this.context = context;
this.containers = containers;
}
}
这个简单的代码提供了一个带有可点击项目的水平滚动图像库。单击将发送到 Activity - 无需在适配器中做一些花哨的事情。我从此处显示的代码中删除了我使用的 DrawableCache,因为我的项目确实来自网络。
关于java - 关于 Android Gallery 控件的一般问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7582843/