我正在尝试“扫雷”。基本上我在GridLayout
和ScrollView
内有HorizontalScrollView
。如果所有字段都在屏幕上(在我的情况下为ImageButtons
),一切都OK。但如果我放大(增加ImageButtons
的大小),HorizontalScrollView
只能部分工作。
看看这张照片:
我放大了更多字段隐藏在左侧,更多可用空间位于右侧。
XML布局:
<ScrollView
android:id="@+id/scrollView1"
android:layout_width="match_parent"
android:layout_height="wrap_content" >
<HorizontalScrollView
android:id="@+id/horizontalScrollView1"
android:layout_width="match_parent"
android:layout_height="wrap_content" >
<GridLayout
android:id="@+id/grid"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:layout_gravity="center" >
</GridLayout>
</HorizontalScrollView>
</ScrollView>
以及如何动态地向GridLayout添加按钮:
field = (GridLayout) findViewById(R.id.grid);
field.setColumnCount(N);
field.setRowCount(N);
for(int i = 0; i < N; i++){
for(int j = 0; j < N; j++){
ImageButton b = new ImageButton(this);
b.setId(j*10+i);
b.setImageResource(R.drawable.unknowen);
b.setTag(R.drawable.unknowen);
b.setScaleType(ImageView.ScaleType.CENTER_CROP);
b.setPadding(5,5,5,5);
GridLayout.LayoutParams params = new GridLayout.LayoutParams();
params.setMargins(-7,-7,-7,-7);
params.width = fieldSize;
params.height = fieldSize;
b.setOnClickListener(this);
b.setOnLongClickListener(this);
field.addView(b, params);
}
}
我为糟糕的语言道歉,并感谢您的帮助!
答案 0 :(得分:1)
首先,我非常确定在HorizontalScrollView(也实现滚动侦听)中嵌套GridView(实现滚动侦听)不太可能按预期工作。
但是,如果你只进行水平滚动,你可能只想将android:scrollbars =“horizontal”添加到GridView并完全摆脱HorizontalScrollView(但我不确定你是否还需要垂直滚动,这会导致这个答案产生更多问题。)
对于向GridView添加数据,您应该更改GridView适配器所支持的对象的LIST中的数据;不是实际的View本身。 GridView中的视图是根据需要由Adapter生成的,并通过将View中的位置映射到数据集中的位置,填充在Adapter的覆盖getView()方法中。
另请注意,在更改数据集之后,您必须始终在适配器上调用notifyDataSetChanged(),以便使用更新的结果刷新其View。