为了账号安全,请及时绑定邮箱和手机立即绑定

ScrollView中的图像网格

ScrollView中的图像网格

不负相思意 2019-09-19 14:35:17
我正在尝试创建一个包含文本和图像的屏幕。我希望图像像网格一样布局,如下所示,但我希望它们没有周围ScrollView提供的滚动功能。图像最能说明我的问题:<ScrollView>    <LinearLayout>        <ImageView />        <TextView />        <GridView />        <TextView />    </LinearLayout></ScrollView>什么是显示不同数量图像的网格的最佳方法,其中网格没有滚动功能?请注意,禁用GridView的滚动功能不起作用,因为这只会禁用滚动条但不显示所有项目。更新:下图显示了在GridView中禁用滚动条的情况。
查看完整描述

3 回答

?
泛舟湖上清波郎朗

TA贡献1818条经验 获得超3个赞

你有2个解决方案:


编写自己的自定义布局。这将是更难的解决方案(但可能被认为是正确的解决方案)。


GridView在代码中设置您的实际高度。例如:


  RelativeLayout.LayoutParams lp =(RelativeLayout.LayoutParams)myGridView.getLayoutParams();

  // lp.setMargins(0,0,10,10); //如果你有布局边距,你也必须设置它们

  lp.height = measureRealHeight(...);

  myGridView.setLayoutParams(LP);

该measureRealHeight()方法应该看起来像这样(希望我做对了):


private int measureRealHeight(...)

{

  final int screenWidth = getWindowManager().getDefaultDisplay().getWidth();

  final double screenDensity = getResources().getDisplayMetrics().density;

  final int paddingLeft = (int) (X * screenDensity + 0.5f); // where X is your desired padding

  final int paddingRight = ...;

  final int horizontalSpacing = (int) (X * screenDensity + 0.5f); // the spacing between your columns

  final int verticalSpacing = ...; // the spacing between your rows

  final int columnWidth = (int) (X * screenDensity + 0.5f);             

  final int columnsCount = (screenWidth - paddingLeft - paddingRight + horizontalSpacing - myGridView.getVerticalScrollbarWidth()) / (columnWidth + horizontalSpacing);

  final int rowsCount = picsCount / columnsCount + (picsCount % columnsCount == 0 ? 0 : 1);


  return columnWidth * rowsCount + verticalSpacing * (rowsCount - 1);

}

上面的代码应该适用于Android 1.5+。


查看完整回答
反对 回复 2019-09-19
  • 3 回答
  • 0 关注
  • 581 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信