2012-01-02 3 views
19

Сетка в моем приложении имеет 3 строки и 3 столбца. Я хочу, чтобы это заполнило экран, независимо от размера экрана устройства.Настройки сетки Android для настройки размера экрана

Я попытался получить размер окна и установить соответствующие параметры. Но это не дает идеального выравнивания, поскольку оно работает с weightsum в linearlayout.

Мы можем использовать weightsum для gridview или есть любое другое свойство android, которое можно использовать. Большое спасибо за время и ответ.

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

каждый элемент сетки

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

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

код адаптера:

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

} 

см. В строке

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

Я пришел к этому значению с некоторыми испытаниями на эмуляторе разного размера. Но я не думаю, что это правильный способ определения высоты и ширины.

+0

Показать код. Что вы пытаетесь? – TryTryAgain

+0

Я добавил. аренда взглянуть. Спасибо за ур время и помощь – png

+0

Тот же вопрос .. Не могли бы вы мне помочь, как вы из этого. – Sreeram

ответ

15

Насколько я понял ваш вопрос, поскольку вы еще не отправили какой-либо код, то, что вы пытаетесь сделать, - вы хотите, чтобы gridview отображался на весь экран.

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

высоту Марка и ширину макета заполнить родителя:

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

затем, установите высоту и ширину вашего gridview и fill_parent.

Ну, это просто предположение, что вы, возможно, работали таким образом. добавление некоторого кода было бы намного лучше. Надеюсь, что это работает для вас.

Update: Ну проблема может лежать здесь:

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

изменения:

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

Надеется, что это работает для вас.

+0

, которые я добавил. аренда взглянуть. Спасибо за ур время и помощь – png

+0

@ Preetha ... см. Обновленный ответ. –

+0

его работа .. большое спасибо – png

10

@preetha: прежде всего посмотрите на этот пример, я использовал это, и мой макет не повлиял независимо от высоты и ширины дизайна ....

http://developer.android.com/resources/tutorials/views/hello-gridview.html

установить следующее в 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" 

надеюсь, что это помогает ...

+1

Спасибо. Я пробовал это, не работал. Для меня нет: cols должно быть три. Также моя сетка - это изображение + текстовое изображение – png

Смежные вопросы