【问题标题】:how to set height of gridview programmatically android如何以编程方式设置gridview的高度android
【发布时间】:2012-12-08 02:21:22
【问题描述】:

我想在我的应用程序中以编程方式设置 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" />

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 = (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"

【问题讨论】:

  • InflateException 通常有根本原因。请提供完整的堆栈跟踪
  • 这个参考链接Gridview height gets cut工作正常

标签: android android-layout gridview


【解决方案1】:

我认为这应该可行:

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

【讨论】:

  • 仔细检查您在 findViewById 中使用的 id
  • 我在一个片段中膨胀这个 GridView,因此我得到一个inflateException。 :(
  • 请提供更多详细信息...您有 ClassCastException 还是 InflateException?如果您需要更多帮助,请使用您的代码和跟踪编辑您的问题。
【解决方案2】:

使用这个,因为你想保留当前的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()
    );
}

【讨论】:

  • 谢谢朋友,这个方法我也试过了。不工作。我正在使用一个片段,我将这个网格视图膨胀到该片段。也许这阻止了这段代码。我正在为指定的类获得一个InflateExceptionclass="com.myapp.android.MyGridViewClass"
猜你喜欢
  • 2023-03-11
  • 1970-01-01
  • 2014-08-22
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2014-10-05
  • 1970-01-01
相关资源
最近更新 更多