2016-08-07 4 views
0

У меня есть GridView, а также задано количество столбцов и ширина по ширине сетки. Нужны предметы с 66dp x 66dp размер. Но как-то элементы квадрата, но меньше 66х66. Что я забыл?Как установить высоту строки GridView?

int zz = .. // number of columns comes from outside 
gridview.setNumColumns(zz); 
LinearLayout.LayoutParams linearParams = (LinearLayout.LayoutParams)gridview.getLayoutParams(); 
linearParams.width=66*zz; 
gridview.setLayoutParams(linearParams); 

<GridView 
       android:id="@+id/gridView1" 
       android:layout_width="match_parent" 
       android:layout_height="match_parent" 
       android:layout_margin="0dp" 
       android:columnWidth="66dp" 
       android:gravity="center" 
       android:horizontalSpacing="0dp" 
       android:scrollbarAlwaysDrawHorizontalTrack="true" 
       android:scrollbarAlwaysDrawVerticalTrack="true" 
       android:scrollbars="horizontal" 
       android:stretchMode="none" 
       android:verticalSpacing="0dp"> 

      </GridView> 

вещь прототип

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

    <ImageView 
     android:id="@+id/icon" 
     android:layout_width="66dp" 
     android:layout_height="66dp" 
     android:padding="0dp" 
     android:background="@android:color/holo_orange_light"/> 

</RelativeLayout> 

shreen выстрелил

enter image description here

+0

вы можете обмениваться скриншотами и какое устройство у вас проверить –

+0

добавил снимок экрана, Alcatel One Touch –

ответ

0

Вы можете использовать это ..

int width = 66*zz; 

view.setLayoutParams(new GridView.LayoutParams(GridView.width, YOUR_HEIGHT)); 
+0

я получаю аварии говорит : 'AbsListView $ LayoutParams не может быть добавлен в файл android.widget.LinearLayout $ LayoutParams' с вашим подходом. Есть ли у вас какие-либо идеи? –

+0

Возможно, вы пытаетесь установить параметры линейных макетов для просмотра списка. –

0

LinearLayout.LayoutParams требует значения в пикселе не дп

int gridItemWithInDp = 66; 
int gridItemWithInPx = (int) (gridItemWithInDp * Resources.getSystem().getDisplayMetrics().density); 

linearParams.width=gridItemWithInPx *zz; 
gridview.setLayoutParams(linearParams); 
0

Вы должны установить ширину GridView в дпе либо из кода или от заявленной в XML ресурсов

из кода:

final float density = getContext().getResources().getDisplayMetrics().density; 
int pixels = (int) ((66 * zz) * density + 0.5f); 

или XML

int pixels = getResources().getDimensionPixelSize(R.dimen.example_dimen); 

gridview.setNumColumns(zz); 
LinearLayout.LayoutParams linearParams =  (LinearLayout.LayoutParams)gridview.getLayoutParams(); 
linearParams.width=pixels; 
gridview.setLayoutParams(linearParams); 

ширина Устанавливаемая прототип и высота MATCH_PARENT

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

    <ImageView 
     android:id="@+id/icon" 
     android:layout_width="match_parent" 
     android:layout_height="match_parent" 
     android:padding="0dp" 
     android:background="@android:color/holo_orange_light"/> 

</RelativeLayout> 
Смежные вопросы