我想在每个图像上使用onClickListener创建至少50个imageViews。 创建具有相同高度和宽度的每种方法的最快方法是什么?
提前致谢
答案 0 :(得分:0)
正如chRyNaN所说,你可以使用一个看起来像图片库的GridView来做到这一点。下面是一个使用XML格式的GridView的快速示例,其中包含一些您可以根据需要查看的有用属性:
<GridView android:id="@+id/grid"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:stretchMode="columnWidth"
android:numColumns="auto_fit"
android:gravity="center"
android:horizontalSpacing="10dp"
android:verticalSpacing="10dp"
android:columnWidth="100dp" />
您必须使用适配器来填充内容。它的工作方式与ListView非常相似。适配器使布局膨胀并将其设置为网格的单元格。这是一个例子:
public class GalleryAdapter extends ArrayAdapter<String> {
// List of URIs of the images to be displayed
private List<String> values;
public GalleryAdapter(Context context, List<String> values ){
super(context, -1, values);
this.values = values;
}
@Override
public View getView(int position, View convertView, ViewGroup parent) {
// Check if an existing view is being reused, otherwise inflate the view
if (convertView == null)
convertView = LayoutInflater.from(getContext()).inflate(R.layout.gallery_item, parent, false);
ImageView imgView = (ImageView) convertView.findViewById(R.id.imageview);
String currentSource = values.get(position);
imgView.setImageURI(Uri.parse( currentSource ));
return convertView;
}
}
然后,您可以拥有一个如下所示的活动:
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.act_photo_gallery);
// Get grid
GridView grid = (GridView) findViewById(R.id.bma_gallery_grid);
List<String> src = new ArrayList<>();
// Add Strings to src here
// Create and set adapter
GalleryAdapter adapter = new GalleryAdapter(this, src);
grid.setAdapter(adapter);
// Set OnItemClickListener
grid.setOnItemClickListener(new AdapterView.OnItemClickListener() {
@Override
public void onItemClick(AdapterView<?> parent, View view, int position, long id) {
// Do stuff
}
});
}
这只是一个例子。您可以使用drawable,URL等填充ImageView。