2016-05-23 5 views
2

Ich verwende GridView, um die Bilder anzuzeigen (nur Tablet), aber zu viel Platz zwischen den Bildern gesucht, aber immer noch nicht die Lösung, finden Sie unter XML-Datei, Java-Code und Screenshot wo bin falsch machen. Meine XML-DateiPlatz zwischen Bilder in GridView Android

<?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="match_parent" 
android:layout_height="match_parent" 
android:paddingBottom="@dimen/activity_vertical_margin" 
android:paddingLeft="@dimen/activity_horizontal_margin" 
android:paddingRight="@dimen/activity_horizontal_margin" 
android:paddingTop="@dimen/activity_vertical_margin" 
tools:context="com.example.naveenbannikoppa.grid.AndroidGridViewDisplayImages" > 

<GridView 
    android:id="@+id/gridview_android_example" 
    android:layout_width="fill_parent" 
    android:layout_height="fill_parent" 
    android:adjustViewBounds="true" 
    android:layout_weight="100" 
    android:horizontalSpacing="0dip" 
    android:verticalSpacing="0dip" 
    android:clipChildren="true" 
    android:layout_alignParentTop="true" 
    android:layout_centerHorizontal="true" 
    android:numColumns="3" > 
</GridView> 


</RelativeLayout> 

Java Datei

public class AndroidGridViewDisplayImages extends AppCompatActivity { 

    GridView androidGridView; 

    Integer[] imageIDs = { 
      R.drawable.mobile_app_41, R.drawable.mobile_app_41, R.drawable.mobile_app_42, 
      R.drawable.mobile_app_43, R.drawable.mobile_app_46, R.drawable.mobile_app_46, 
      R.drawable.mobile_app_46, R.drawable.mobile_app_41, R.drawable.mobile_app_42, 

    }; 

    @Override 
    protected void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 
     setContentView(R.layout.gridview_android_example_with_image); 

     androidGridView = (GridView) findViewById(R.id.gridview_android_example); 
     androidGridView.setAdapter(new ImageAdapterGridView(this)); 

     androidGridView.setOnItemClickListener(new AdapterView.OnItemClickListener() { 
      public void onItemClick(AdapterView<?> parent, 
            View v, int position, long id) { 
       Toast.makeText(getBaseContext(), "Grid Item " + (position + 1) + " Selected", Toast.LENGTH_LONG).show(); 
      } 
     }); 

    } 

    public class ImageAdapterGridView extends BaseAdapter { 
     private Context mContext; 

     public ImageAdapterGridView(Context c) { 
      mContext = c; 
     } 

     public int getCount() { 
      return imageIDs.length; 
     } 

     public Object getItem(int position) { 
      return null; 
     } 

     public long getItemId(int position) { 
      return 0; 
     } 

     public View getView(int position, View convertView, ViewGroup parent) { 
      ImageView mImageView; 

      if (convertView == null) { 
       mImageView = new ImageView(mContext); 
       mImageView.setLayoutParams(new GridView.LayoutParams(150, 150)); 
       mImageView.setScaleType(ImageView.ScaleType.CENTER_CROP); 
       mImageView.setAdjustViewBounds(true); 

       mImageView.setPadding(8, 8, 8, 8); 
      } else { 
       mImageView = (ImageView) convertView; 
      } 
      mImageView.setImageResource(imageIDs[position]); 
      return mImageView; 
     } 
    } 
} 

Bildschirm

Schuss

enter image description here

Ich mag dieses

wollen enter image description here

+0

wollen Sie immer 3 Spalten in 1 Reihe oder? es ist in Ordnung, wenn mehr als 3 Spalten in 1 Zeile –

+0

ja immer 3 Spalten wollen, @PhanVanLinh –

Antwort

0

Wenn Sie immer 3 Spalten in einer Zeile haben wollen, sollten Sie Höhe der einzelnen Elemente berechnen, hängt von der Bildschirmhöhe (wird es sein, ist gleich screenheight-gap/numberofitem)

if (convertView == null) { 
    int screenHeight = getResources().getDisplayMetrics().heightPixels; 
    int screenWidth = getResources().getDisplayMetrics().widthPixels; 

    int height = MIN(screenHeight,screenWidth); 
    int numberOfCollumns = 3; 
    int verticalSpace = 10; 
    int itemHeight = (height - (numberOfCollumns + 1) * horizontalSpace)/numberOfCollumns; 

    mImageView = new ImageView(mContext); 
    //mImageView.setLayoutParams(new GridView.LayoutParams(150, 150)); 
    mImageView.setLayoutParams(new GridView.LayoutParams(itemHeight, itemHeight)); 

    ... 
} 

und in xML, GridView ändern android:layout_width="fill_parent" zu android:layout_width="wrap_content"

<GridView 
    android:id="@+id/gridview_android_example" 
    android:layout_width="wrap_content" 
    ... 
/> 
+0

Bilder werden groß, ich kann nicht zeigen 3 * 3 Matrix-Ansicht möchte alle 9 Bilder ohne Bildlauf @PhanVanLinh zeigen –

+0

@Naveen können Sie den 'horizontalSpace' Wert erhöhen, wie Sie möchten –

+0

Noch nicht funktioniert, wenn ich erhöhen horizontalSpace to show wieder am gleichen bekommen, die ich oben screenshot @PhanVanLinh –

1

die Sie interessieren,

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

Funktioniert nicht, numColumns sollte 3 sein. @SathishKumarJ –

0

Verwendung dieser Code, vertikale Abstand erhöhen ...

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

funktioniert nicht, android: numColumns sollte 3 statt AutoFit sein. @SikanderBhutto –

0

Sie Android verwenden: verticalSpacing und android: horizontalSpacing in Gridview-Tag

android: horizontalSpacing = "10dp" // Abstand zwischen zwei Elementen (horizontal)

android: verticalSpacing = „10DP“ // Abstand zwischen zwei Zeilen (vertikal)

+0

Nicht funktioniert, habe ich ein Problem mit der Spalte nicht Zeile. @Tufan –

0

Eigentlich gibt es kein Problem in Ihrem Layout. Das Problem ist die Größe der Bilder, die Sie verwenden. versuchen Sie es, nachdem Sie die Größe der Bilder geändert haben.

+0

Wie groß sollte das Bild sein? @NikhilSuwalka –

+0

Entwicklerkonsole für die Größe von Bildern für verschiedene Layouts. und überprüfen Sie auch diese [link] (http://www.tutorialspoint.com/android/android_grid_view.htm) –