Android 线性布局内的双向栅格视图

Android 线性布局内的双向栅格视图,android,android-layout,gridview,android-studio,Android,Android Layout,Gridview,Android Studio,让双向Gridview库(最初由Jess Andres创建)在线性布局中工作,我遇到了一些问题 Jess的示例代码本身在布局xml中只有gridview,但是我需要在gridview周围添加其他元素,因此将元素和gridview放在LinearLayout中。 问题是我得到了以下错误 java.lang.ClassCastException: android.widget.AbsListView$LayoutParams cannot be cast to two_way_gridview_gr

让双向Gridview库(最初由Jess Andres创建)在线性布局中工作,我遇到了一些问题

Jess的示例代码本身在布局xml中只有gridview,但是我需要在gridview周围添加其他元素,因此将元素和gridview放在LinearLayout中。 问题是我得到了以下错误

java.lang.ClassCastException: android.widget.AbsListView$LayoutParams cannot be cast to two_way_gridview_gradle.TwoWayAbsListView$LayoutParams
        at two_way_gridview_gradle.TwoWayGridView$HorizontalGridBuilder.onMeasure(TwoWayGridView.java:2872)
        at two_way_gridview_gradle.TwoWayGridView.onMeasure(TwoWayGridView.java:286)
我知道问题在于充气机试图将TwoWayAbsList中的参数分配给LinearLayout参数,但我不知道如何强制它仅使用TwoWayAbsListView参数

这是我的布局文件

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:orientation="vertical"
    android:layout_width="match_parent"
    android:layout_height="match_parent">

        <TextView
            android:id="@+id/caller_text"
            android:layout_width="174dp"
            android:layout_height="wrap_content"
            android:layout_marginTop="35dp"
            android:lines="2"
            android:textSize="17sp"
            android:text="First text block"
            android:layout_gravity="center_horizontal"
            android:gravity="center_horizontal"/>

    <two_way_gridview_gradle.TwoWayGridView xmlns:android="http://schemas.android.com/apk/res/android"
        xmlns:app="http://schemas.android.com/apk/res-auto"
        android:id="@+id/gridview"
        android:layout_width="fill_parent"
        android:layout_height="fill_parent"
        android:background="#E8E8E8"
        app:cacheColorHint="#E8E8E8"
        app:columnWidth="80dp"
        app:rowHeight="80dp"
        app:gravity="center"
        app:horizontalSpacing="16dp"
        app:verticalSpacing="16dp"
        app:numColumns="auto_fit"
        app:numRows="auto_fit"
        app:scrollDirectionLandscape="horizontal"
        app:scrollDirectionPortrait="horizontal"
        app:stretchMode="spacingWidthUniform"
        />

        <TextView
            android:id="@+id/cancel_text"
            android:layout_width="174dp"
            android:layout_height="wrap_content"
            android:layout_marginTop="35dp"
            android:lines="2"
            android:textSize="17sp"
            android:text="Second text block"
            android:layout_gravity="center_horizontal"
            android:gravity="center_horizontal"/>

</LinearLayout>

我一直忙于实现双向gridview,但最终还是以我的方式实现了它:

<ScrollView
                android:id="@+id/mainscrolView"
                android:layout_width="match_parent"
                android:layout_height="match_parent"
                android:orientation="vertical"
                >


                <HorizontalScrollView
                    android:id="@+id/rclv"
                    android:layout_width="match_parent"
                    android:layout_height="wrap_content"
                    >

                    <LinearLayout
                        android:layout_width="wrap_content"
                        android:layout_height="match_parent"
                        android:orientation="vertical"
                        >



                        <TableLayout
                            android:id="@+id/table"
                            android:layout_width="wrap_content"
                            android:layout_height="wrap_content"
                            android:stretchColumns="*"
                            >

                        </TableLayout>
                    </LinearLayout>
                </HorizontalScrollView>
</ScrollView>

如果要向单元格添加边框。这里有一些解决方法。

您已经用xml设置了布局高度和宽度。那么为什么还要在代码
gridView.setLayoutParams(…)
中再次设置呢?问题出在
gridView.setLayoutParams(…)
中,这是我在扩展布局时试图强制参数类型为双向AbsListView。我已经更新了帖子,删除了那个调用,并显示了不同的错误消息(这仍然是一个演员问题)解决了@Rustam很接近,事实上是我的GridImageAdapter中的这一行导致了问题
imageView.setLayoutParams(新的GridView.LayoutParams(70,70))
<ScrollView
                android:id="@+id/mainscrolView"
                android:layout_width="match_parent"
                android:layout_height="match_parent"
                android:orientation="vertical"
                >


                <HorizontalScrollView
                    android:id="@+id/rclv"
                    android:layout_width="match_parent"
                    android:layout_height="wrap_content"
                    >

                    <LinearLayout
                        android:layout_width="wrap_content"
                        android:layout_height="match_parent"
                        android:orientation="vertical"
                        >



                        <TableLayout
                            android:id="@+id/table"
                            android:layout_width="wrap_content"
                            android:layout_height="wrap_content"
                            android:stretchColumns="*"
                            >

                        </TableLayout>
                    </LinearLayout>
                </HorizontalScrollView>
</ScrollView>
TableLayout tv =  findViewById(R.id.table);
 tv.removeAllViewsInLayout();

 TableRow tr = new TableRow(AndroidDatabaseManager.this);

 tr.setLayoutParams(new LayoutParams(
                        LayoutParams.MATCH_PARENT,
                        LayoutParams.WRAP_CONTENT));
 TextView b3 = new TextView(AndroidDatabaseManager.this);
b3.setText("Child");
tr.addView(b3);

 tv.addView(tr);

                final View vline = new View(AndroidDatabaseManager.this);
                vline.setLayoutParams(new
                        TableRow.LayoutParams(TableRow.LayoutParams.MATCH_PARENT,2));
                vline.setBackgroundColor(Color.BLUE);
                tv.addView(vline);