Asw*_*nan 15 android gridview android-layout
我想在我的应用程序中以编程方式设置Gridview的高度.
有没有办法实现呢?
我只想从代码中更改两个特定情况下的gridview高度.
编辑:
<fragment
android:id="@+id/mygridview"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:layout_margin="10dip"
class="com.myapp.android.MyGridViewClass" />
Run Code Online (Sandbox Code Playgroud)
MyGridViewClass扩展了Fragment,其中填充了Gridview.
<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" />
Run Code Online (Sandbox Code Playgroud)
在myGridViewClass中onViewCreated,我使用代码对gridview进行了膨胀,
gridView = (GridView)getView().findViewById( R.id.mygridview_container);
gridAdapter = new MyCustomAdapter(context, list);
gridView.setAdapter(gridAdapter);
Run Code Online (Sandbox Code Playgroud)
每当创建视图时,我都必须检查gridview中的项目数并相应地设置高度.
当我尝试为gridview设置layoutParams()时,我遇到了这个异常.
android.view.InflateException: Binary XML file line #89: Error inflating class fragment
Run Code Online (Sandbox Code Playgroud)
其中第89行对应于片段class ="com.myapp.android.MyGridViewClass"中的这一行
ste*_*ong 29
使用它,因为你想保留当前layoutParams:
ViewGroup.LayoutParams layoutParams = yourGridview.getLayoutParams();
layoutParams.height = 50; //this is in pixels
yourGridview.setLayoutParams(layoutParams);
Run Code Online (Sandbox Code Playgroud)
编辑:如果要输入高度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()
);
}
Run Code Online (Sandbox Code Playgroud)