如何创建具有相同高度和宽度的多个图像视图

时间:2016-05-16 17:41:11

标签: android imageview android-drawable

我想在每个图像上使用onClickListener创建至少50个imageViews。 创建具有相同高度和宽度的每种方法的最快方法是什么?

提前致谢

1 个答案:

答案 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。