web-dev-qa-db-ja.com

プログラムでgridviewの高さを設定する方法android

アプリケーションでプログラム的にGridviewの高さを設定したい。

それを実装する方法はありますか?

コードから特定の2つのケースでグリッドビューの高さを変更したいだけです。

編集:

<fragment
     Android:id="@+id/mygridview"
     Android:layout_width="fill_parent"
     Android:layout_height="wrap_content"
     Android:layout_margin="10dip"
     class="com.myapp.Android.MyGridViewClass" />

MyGridViewClassは、Gridviewが入力されるFragmentを拡張します。

 <GridView
    Android:id="@+id/mygridview_container"
    Android:layout_width="fill_parent"
    Android:layout_height="wrap_content"
    Android:layout_marginBottom="5dip"
    Android:columnWidth="90dp"
    Android:gravity="center_vertical|center_horizontal"
    Android:horizontalSpacing="1dp"
    Android:numColumns="3"
    Android:scrollbars="vertical"
    Android:stretchMode="spacingWidthUniform"
    Android:verticalSpacing="5dp" />

MyGridViewClass onViewCreatedでは、コードを使用してグリッドビューを拡張しています。

gridView = (GridView)getView().findViewById( R.id.mygridview_container);
gridAdapter = new MyCustomAdapter(context, list);
gridView.setAdapter(gridAdapter);   

ビューが作成されるたびに、グリッドビューのアイテム数を確認し、それに応じて高さを設定する必要があります。

GridviewにlayoutParams()を設定しようとすると、この例外が発生しました。

Android.view.InflateException: Binary XML file line #89: Error inflating class fragment

行89は、フラグメントclass = "com.myapp.Android.MyGridViewClass"のこの行に対応します

16

現在のlayoutParamsを保持するため、これを使用します。

ViewGroup.LayoutParams layoutParams = yourGridview.getLayoutParams();
layoutParams.height = 50; //this is in pixels
yourGridview.setLayoutParams(layoutParams);

編集:高さをピクセルではなくdpとして入力する場合は、dpの量をピクセルに変換します。

public static int convertDpToPixels(float dp, Context context){
    Resources resources = context.getResources();
    return (int) TypedValue.applyDimension(
            TypedValue.COMPLEX_UNIT_DIP,
            dp, 
            resources.getDisplayMetrics()
    );
}
30
stealthjong

私はこれがうまくいくと思います:

GridView gridView = (GridView)findViewById(...);
ViewGroup.LayoutParams lp=new ViewGroup.LayoutParams(width,height);
gridView.setLayoutParams(lp);
3
ben75