2016-05-16 1 views
0

Я хотел создать по крайней мере 50 изображений с помощью onClickListener на каждом из них. Каков самый быстрый способ создать каждый из них с одинаковой высотой и шириной?Как создать несколько изображений с одинаковой высотой и шириной

заранее спасибо

+2

Используйте ViewGroup, который использует адаптер для заполнения его дочерними представлениями. Посмотрите на GridView. – chRyNaN

ответ

0

По словам chRyNaN, вы можете сделать это с помощью GridView, который будет выглядеть как картинная галерея. Вот краткий пример GridView в XML с некоторыми полезными атрибутами вы можете посмотреть в случае необходимости:

<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" /> 

Вы должны использовать адаптер для заполнения контента. Он очень похож на ListViews. Адаптер раздувает макет и устанавливает его в ячейку сетки. Вот пример:

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 
     } 
    }); 
} 

Это просто пример. Вы можете заполнить свой ImageView чертежами, URL-адресами и т. Д.