android中的两个gridView和一个滚动条
在一项活动中,我需要两个GridView,每个GridView的高度与所需的高度相同。没有gridview有单独的滚动条,但它们只有一个滚动条。 我试过这样的东西android中的两个gridView和一个滚动条,android,gridview,Android,Gridview,在一项活动中,我需要两个GridView,每个GridView的高度与所需的高度相同。没有gridview有单独的滚动条,但它们只有一个滚动条。 我试过这样的东西 <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:orientation="vertical" android:layout_width="fill_parent" android:layout_height="
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:orientation="vertical"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
>
<GridView
android:id="@+id/gridView1"
android:layout_width="fill_parent"
android:layout_height="wrap_content" //as much height as it needs
android:background="#9C5353"
android:gravity="center"
android:horizontalSpacing="20dp"
android:numColumns="2"
android:layout_weight="1"
android:scrollbars="none"
android:stretchMode="columnWidth"
android:verticalSpacing="20dp" >
</GridView>
<GridView
android:id="@+id/gridView2"
android:layout_width="fill_parent"
android:layout_height="wrap_content" //as much height as it needs
android:scrollbars="none"
android:numColumns="1"
android:layout_weight="1"
android:horizontalSpacing="20dp"
android:verticalSpacing="20dp"
android:gravity="center"
android:stretchMode="columnWidth" >
</GridView>
</LinearLayout>
我试了很多次,但都没有找到解决办法。
任何人都可以找到解决方法吗?您可以将网格视图设置为固定,并使用滚动视图包含它们
public class FixedGridView extends GridView {
public FixedGridView(Context context, AttributeSet attrs, int defStyle) {
super(context, attrs, defStyle);
}
public FixedGridView(Context context, AttributeSet attrs) {
super(context, attrs);
}
public FixedGridView(Context context) {
super(context);
}
@Override
protected void onMeasure(int widthMeasureSpec, int heightMeasureSpec) {
int expandSpec = MeasureSpec.makeMeasureSpec(
Integer.MAX_VALUE >> 2, MeasureSpec.AT_MOST);
super.onMeasure(widthMeasureSpec, expandSpec);
}
}根据tesla1984的答案,这里是我的完整工作代码。它按预期工作:
- 创建一个名为FlexGridView的新类,如下所示,并将其保存在项目中的已知位置。(我使用了一个名为“视图”的文件夹)
<ScrollView
android:layout_width="match_parent"
android:layout_height="match_parent">
<LinearLayout
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical">
<your.product.id.views.FixedGridView
android:id="@+id/gridViewPublic"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:numColumns="1"
android:stretchMode="columnWidth"
android:horizontalSpacing="10"
android:verticalSpacing="10"
android:background="@color/transparent_color" />
<your.product.id.views.FixedGridView
android:id="@+id/gridViewPrivate"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:layout_marginTop="10"
android:layout_marginBottom="10"
android:numColumns="2"
android:stretchMode="columnWidth"
android:horizontalSpacing="10"
android:verticalSpacing="10"
android:background="@color/transparent_color" />
</LinearLayout>
</ScrollView>
为什么不给secondGridView
?为什么不只使用一个RecyclerView
?我不明白你在说什么,因为我是android新手@KetanAhirI不知道为什么要使用两个GridView。如果要为每个GridView显示不同的数据,也可以使用单个RecyclerView。请向谷歌询问一个例子。是否可以在一个滚动视图中使用两个RecyclerView@Ketanahiri我应该把这个代码放在哪里??有完整的例子吗@Tesla1984将新文件FixedGridView创建到项目中,并将布局中的GridView更改为FixedGridView。FixedGridView与GridView相同,但FixedGridView将显示所有数据,并且没有滚动条。您可以提供一个完整的示例吗@tesla1984Hey您知道为什么实现上述解决方案会导致gridview.setSelection()无法工作吗?
<ScrollView
android:layout_width="match_parent"
android:layout_height="match_parent">
<LinearLayout
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical">
<your.product.id.views.FixedGridView
android:id="@+id/gridViewPublic"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:numColumns="1"
android:stretchMode="columnWidth"
android:horizontalSpacing="10"
android:verticalSpacing="10"
android:background="@color/transparent_color" />
<your.product.id.views.FixedGridView
android:id="@+id/gridViewPrivate"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:layout_marginTop="10"
android:layout_marginBottom="10"
android:numColumns="2"
android:stretchMode="columnWidth"
android:horizontalSpacing="10"
android:verticalSpacing="10"
android:background="@color/transparent_color" />
</LinearLayout>
</ScrollView>