2016-05-04 27 views
2

Ich habe eine Gridview mit 2 Spalten und 3 Zeilen erstellt, die Bilder mit Text enthält. enter image description hereGröße der Gridview-Höhe automatisch ändern?

Everthing funktioniert gut .. Aber das Problem ist, wenn ich mit einer anderen Art von Bildschirm versuchen ... ich eine Moto X 2013 haben und die Bilder haben 192x192 px und die gridview sieht gut aus

Mit einem moto G2 ich eine Rolle in de gridview haben und ich will es nicht

ich habe dies für die Bildgrößen in den respectives ziehbar Ordner: xxhdpi - 240x240 px xhdpi - 192x192 px hdpi - 144x144 px mdpi - 92x92 px

Und ich habe das gleiche Problem. Warum diese Größe für das Telefon? Weil ich die Gridview wie das Bild aussehen möchte, fülle die Höhe (also versuche ich mit verschiedenen Größen zu wissen, wie das für mein Handy stimmt) aber das Moto G2 enttäuscht mich. Wenn ich die Bildgröße kleiner als 192x192 setze, wird die Rasteransicht nicht am unteren Rand des Bildschirms enden.

Das ist mein

grid_item.xml

<?xml version="1.0" encoding="UTF-8"?> 
<LinearLayout 
xmlns:android="http://schemas.android.com/apk/res/android" 
android:layout_width="match_parent" 
android:layout_height="match_parent" 
android:orientation="vertical" 
android:background="#455A64" 
android:gravity="center_horizontal"> 
<ImageView 
    android:id="@+id/picture" 
    android:layout_marginTop= "10dp" 
    android:layout_marginBottom="10dp" 
    android:layout_gravity="center_horizontal" 
    android:layout_width="match_parent" 
    android:layout_height="match_parent"> 
</ImageView> 

<TextView 
    android:id="@+id/text" 
    android:layout_width="wrap_content" 
    android:layout_height="wrap_content" 
    android:layout_marginBottom="10dp" 
    android:layout_gravity="center_horizontal"/> 

</LinearLayout> 

main_activity.xml

<?xml version="1.0" encoding="utf-8"?> 
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" 
xmlns:tools="http://schemas.android.com/tools" 
android:layout_width="fill_parent" 
android:layout_height="fill_parent" 
android:fitsSystemWindows="true"> 

<LinearLayout 
    android:orientation="vertical" 
    android:layout_width="match_parent" 
    android:layout_height="wrap_content" 
    android:gravity="start" 
    android:paddingTop="0dp" 
    android:paddingLeft="0dp" 
    android:paddingRight="0dp"> 

    <LinearLayout 
     android:orientation="horizontal" 
     android:layout_width="fill_parent" 
     android:layout_height="match_parent" 
     android:background="@color/primary_dark" 
     android:weightSum="1"> 

     <LinearLayout 
      android:orientation="horizontal" 
      android:layout_width="match_parent" 
      android:layout_margin="8dp" 
      android:layout_height="match_parent" 
      android:background="@drawable/style_spinner" 
      android:weightSum="1"> 

      <TextView 
       android:layout_width="wrap_content" 
       android:layout_height="wrap_content" 
       android:textAppearance="?android:attr/textAppearanceLarge" 
       android:text="Ciudad: " 
       android:paddingLeft="6dp" 
       android:id="@+id/textView34" 
       android:textAlignment="center" 
       android:layout_gravity="center_vertical" 
       android:textSize="18dp" /> 

      <Spinner 
       android:layout_width="match_parent" 
       android:layout_height="wrap_content" 

       android:layout_marginRight="8dp" 
       android:id="@+id/spn_ciudad" 
       android:layout_weight="0.95" /> 

     </LinearLayout> 


    </LinearLayout> 

    <GridView 
     android:id="@+id/gridViewMainActivity" 
     android:layout_width="match_parent" 
     android:layout_height="match_parent" 
     android:layout_gravity="center_horizontal|center_vertical" 
     android:verticalSpacing="1dp" 
     android:horizontalSpacing="1dp" 
     android:background="@color/primary_dark" 
     android:stretchMode="columnWidth" 
     android:numColumns="2"/> 



</LinearLayout> 


</RelativeLayout> 

GridViewAdapter.java

import android.content.Context; 
import android.view.LayoutInflater; 
import android.view.View; 
import android.view.ViewGroup; 
import android.widget.BaseAdapter; 
import android.widget.ImageView; 
import android.widget.TextView; 

import java.util.ArrayList; 
import java.util.List; 

public class GridViewAdapter extends BaseAdapter { 
private final List<Item> mItems = new ArrayList<Item>(); 
private final LayoutInflater mInflater; 

public GridViewAdapter (Context context) { 
    mInflater = LayoutInflater.from(context); 
    mItems.add(new Item("Buscar por complejos",  R.drawable.clock)); 
    mItems.add(new Item("Buscar por horarios", R.drawable.clock)); 
    mItems.add(new Item("Buscar por localizacion", R.drawable.clock)); 
    mItems.add(new Item("Ver ultimas operaciones",R.drawable.clock)); 
    mItems.add(new Item("Green",R.drawable.clock)); 
    clock.add(new Item("Cyan",  R.drawable.clock)); 
} 

@Override 
public int getCount() { 
    return mItems.size(); 
} 

@Override 
public Item getItem(int i) { 
    return mItems.get(i); 
} 

@Override 
public long getItemId(int i) { 
    return mItems.get(i).drawableId; 
} 

@Override 
public View getView(int i, View view, ViewGroup viewGroup) { 
    View v = view; 
    ImageView picture; 
    TextView name; 

    if (v == null) { 
     v = mInflater.inflate(R.layout.grid_item, viewGroup, false); 
     v.setTag(R.id.picture, v.findViewById(R.id.picture)); 
     v.setTag(R.id.text, v.findViewById(R.id.text)); 
    } 

    picture = (ImageView) v.getTag(R.id.picture); 
    name = (TextView) v.getTag(R.id.text); 

    Item item = getItem(i); 

    picture.setImageResource(item.drawableId); 
    name.setText(item.name); 

    return v; 
} 

private static class Item { 
    public final String name; 
    public final int drawableId; 

    Item(String name, int drawableId) { 
     this.name = name; 
     this.drawableId = drawableId; 
    } 
} 
} 

Dies ist, wie Moto G2 aussieht (Do Du siehst die Schriftrolle ba r ?, und wenn der Bildschirm kleiner ist als die G2 Moto ist, ist die Scroll viel mehr!): enter image description here

Jede Lösung für mein Problem? Danke für die Hilfe!

Antwort

0

Versuchen Sie, android: numColumns = "auto_fit" und android: stretchMode = "columnWidth" hinzuzufügen und die übergeordnete GridView-Höhe auf MATCH_PARENT zu setzen.

<?xml version="1.0" encoding="utf-8"?> 
<GridView xmlns:android="http://schemas.android.com/apk/res/android" 
    android:id="@+id/gridview" 
    android:layout_width="match_parent" 
    android:layout_height="match_parent" 
    android:columnWidth="90dp" 
    android:numColumns="auto_fit" 
    android:verticalSpacing="10dp" 
    android:horizontalSpacing="10dp" 
    android:stretchMode="columnWidth" 
    android:gravity="center" /> 

Beispielcode aus http://developer.android.com/intl/es/guide/topics/ui/layout/gridview.html

+0

Nicht Workin :(, auch ich brauche zwei Spalten, nicht mehr als das –

Verwandte Themen