2016-05-16 7 views
0

Ich wollte mindestens 50 imageViews mit onClickListener auf jedem von ihnen erstellen. Was ist der schnellste Weg, um jede von ihnen mit der gleichen Höhe und Breite zu erstellen?So erstellen Sie mehrere Imageviews mit gleicher Höhe und Breite

Dank im Voraus

+2

Verwenden Sie eine ViewGroup, die einen Adapter verwendet, um sie mit untergeordneten Ansichten zu füllen. Schau in GridView. – chRyNaN

Antwort

0

Wie chRyNaN sagte, können Sie dies mit einem Gridview tun, die wie eine Bildergalerie aussehen wird. Hier ist ein kurzes Beispiel der Gridview in XML mit einigen nützlichen Attributen, die Sie suchen in können bei Bedarf:

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

Sie haben einen Adapter verwenden, um den Inhalt zu füllen. Es funktioniert sehr ähnlich wie ListViews. Der Adapter bläst ein Layout auf und setzt es in eine Zelle des Rasters. Hier ein Beispiel:

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

Dann können Sie eine Aktivität haben, die wie folgt aussieht:

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

Dies ist nur ein Beispiel. Sie können Ihre ImageView mit Zeichenelementen, URLs usw. füllen.