Tampilan kisi-kisi Android menyesuaikan dengan ukuran layar

Tampilan grid aplikasi saya memiliki 3 baris dan 3 kolom. Saya ingin ini mengisi layar, terlepas dari ukuran layar perangkat.

Saya mencoba mendapatkan ukuran jendela dan mengatur layoutparams yang sesuai. Tetapi ini tidak memberikan perataan yang sempurna karena bekerja dengan bobotum dalam linearlayout.

Jadi bisakah kita menggunakan weightsum untuk gridview atau apakah ada properti android lain yang dapat digunakan. Terima kasih banyak atas waktu dan tanggapannya.

<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:layout_below="@+id/text1view"
                android:background="@drawable/home_bg"
                android:gravity="center"
                android:horizontalSpacing="10dip"
                android:numColumns="3"
                android:stretchMode="columnWidth" />

setiap item grid adalah

<?xml version="1.0" encoding="utf-8"?>

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:id="@+id/GridItem" android:layout_width="wrap_content" android:layout_height="wrap_content" android:gravity="center_horizontal" android:orientation="vertical" >

<ImageView
    android:id="@+id/grid_item_image"
    android:layout_width="wrap_content"
    android:layout_height="75dip"
    android:layout_margin="0dip"
    android:padding="0dip" >
</ImageView>

<TextView
    android:id="@+id/grid_item_text"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:layout_alignParentBottom="true"
    android:layout_below="@+id/grid_item_image"
    android:gravity="center_horizontal"
    android:padding="0dip"
    android:textColor="#000000"
    android:textSize="10sp" >
</TextView>

kode adaptor:

    @Override
public View getView(final int position, View convertView, ViewGroup parent) {
    ViewHolder holder;

    if (convertView == null) {
        LayoutInflater mInflater = (LayoutInflater) mContext
                .getSystemService(Context.LAYOUT_INFLATER_SERVICE);
        convertView = mInflater.inflate(R.layout.griditems, null);
        holder = new ViewHolder();
        holder.text1 = (TextView) convertView
                .findViewById(R.id.grid_item_text);

        holder.image = (ImageView) convertView
                .findViewById(R.id.grid_item_image);

        // if it's not recycled, initialize some attributes
        holder.image.setImageResource(gridItemIds[position]);
        holder.text1.setText(gridTitles[position]);
        int h = mContext.getResources().getDisplayMetrics().densityDpi;

        // holder.image.setLayoutParams(new LayoutParams(h-50,h-50));
        convertView.setLayoutParams(new GridView.LayoutParams(h - 45,
                h - 39));
        // holder.image.setScaleType(ImageView.ScaleType.CENTER_CROP);
        // holder.image.setScaleType(ImageView.ScaleType.FIT_XY);
        // holder.image.setPadding(20, 20, 20, 20);

        // convertView.setLayoutParams(new GridView.LayoutParams(Utils
        // .getLayoutParameter(), Utils.getLayoutParameter()+50));

        holder.image.setOnClickListener(new View.OnClickListener() {

            @Override
            public void onClick(View view) {
                new ModuleManager().startModuleACtivity(position, mContext);
            }
        });
        convertView.setTag(holder);
    } else {

        holder = (ViewHolder) convertView.getTag();

    }

    return convertView;
}

static class ViewHolder {
    TextView text1;
    ImageView image;

}

tolong lihat garisnya

convertView.setLayoutParams(new GridView.LayoutParams(h-45, h-39));

saya sampai pada nilai ini dengan beberapa percobaan pada emulator ukuran yang berbeda. Tapi saya tidak berpikir ini adalah cara yang tepat untuk menentukan tinggi dan lebar.

Larutan

Sejauh yang saya pahami dari pertanyaan anda, karena anda belum memposting kode apapun, apa yang anda coba lakukan adalah, anda ingin gridview muncul di layar penuh.

Pertama anda harus menggunakan beberapa layout untuk meletakkan gridview anda. Lakukan hal berikut:

Buat tinggi dan lebar layout untuk mengisi parent:

android:layout_width="fill_parent"
android:layout_height="fill_parent"

kemudian, atur tinggi dan lebar tampilan grid Anda untuk mengisi_parent juga.

Nah, ini hanyalah solusi yang mungkin telah Anda kerjakan dengan cara ini. meletakkan beberapa kode akan jauh lebih baik. Semoga ini bekerja untuk Anda.

Update: Nah masalahnya mungkin terletak di sini:

 convertView.setLayoutParams(new GridView.LayoutParams(h-45, h-39));

berubah menjadi:

 LinearLayout.LayoutParams params = new LinearLayout.LayoutParams(LinearLayout.LayoutParams.FILL_PARENT, LinearLayout.LayoutParams.FILL_PARENT);
 convertView.setLayoutParams(new GridView.LayoutParams(params));

Semoga ini berhasil untuk Anda.

Komentar (11)

@preetha: pertama-tama lihatlah contoh ini, saya menggunakan ini dan tata letak saya tidak mempengaruhi terlepas dari tinggi dan lebar devise....

atur yang berikut ini dalam xml

android:id="@+id/gridview"
    android:layout_width="fill_parent" 
    android:layout_height="fill_parent"
    android:columnWidth="90dp"
    android:numColumns="auto_fit"
    android:verticalSpacing="10dp"
    android:horizontalSpacing="10dp"
    android:stretchMode="columnWidth"
    android:gravity="center"

semoga ini membantu...

Komentar (1)