gpt4 book ai didi

android - 带有 ExpandableHeightGridView 的 ScrollView 不滚动

转载 作者:行者123 更新时间:2023-11-30 01:13:58 25 4
gpt4 key购买 nike

我希望我的应用程序的主页有不同的部分,每个部分都包含一个项目列表。为此,我使用了 ScrollView。在 ScrollView 中,我放置了一个搜索区域和一个 ExpandableHeightGridView(这是一个帮助 GridView 扩展 ScrollView 内部空间的自定义类> 基于项目的数量)。

但无论如何,scrollView 都不起作用,搜索框出现在屏幕顶部,同时 GridView 滚动,就好像它不在 ScrollView 中一样。

下面是我的代码:

activity_main.xml

<android.support.v4.widget.DrawerLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:id="@+id/drawer_layout"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:background="@color/njoftime_background">


<ScrollView
android:id="@+id/sv"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:background="@color/white">

<LinearLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:background="@color/white"
android:layout_marginTop="?android:attr/actionBarSize"
android:orientation="vertical">


<RelativeLayout
android:id="@+id/sr"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:layout_margin="10dp"
android:background="@drawable/event_background_block"
android:padding="5dp">

<RelativeLayout
android:id="@+id/search_area"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:focusableInTouchMode="true"
android:background="@drawable/njoftime_item_background">

<ImageButton
android:id="@+id/btn_search"
android:layout_width="65dp"
android:layout_height="35dp"
android:layout_alignParentRight="true"
android:layout_marginLeft="1dp"
android:background="@color/njoftime_main_color"
android:onClick="searchPressed"
android:scaleType="fitCenter"
android:src="@drawable/ic_search_white" />

<EditText
android:id="@+id/search_text"
android:layout_width="fill_parent"
android:layout_height="35dp"
android:layout_alignParentLeft="true"
android:layout_toLeftOf="@+id/btn_search"
android:background="@null"
android:ems="20"

android:imeOptions="actionSearch"
android:inputType="text"
android:maxLines="1"
android:paddingLeft="7dp"
android:textColor="@color/njoftime_desc"
android:textCursorDrawable="@null"
android:textSize="17sp" />

</RelativeLayout>

<RelativeLayout
android:id="@+id/search_categories_area"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:layout_below="@+id/search_area"
android:paddingBottom="7dp"
android:paddingTop="13dp">


<GridView
android:id="@+id/search_grid"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:layout_centerHorizontal="true"
android:drawSelectorOnTop="false"
android:horizontalSpacing="2dp"
android:numColumns="4" />

</RelativeLayout>
</RelativeLayout>

<RelativeLayout
android:layout_width="match_parent"
android:layout_height="wrap_content">

<com.example.crs.tempus.ExpandableHeightGridView
android:id="@+id/njoftime_list"
android:layout_width="match_parent"
android:horizontalSpacing="5dp"
android:verticalSpacing="5dp"
android:layout_marginTop="5dp"
android:layout_height="wrap_content"
android:background="@color/white"
android:drawSelectorOnTop="true"
android:numColumns="1" />


</RelativeLayout>
</LinearLayout>
</ScrollView>

<RelativeLayout
android:id="@+id/left_drawer"
android:layout_width="230dp"
android:layout_height="fill_parent"
android:layout_gravity="start"
android:layout_marginTop="?android:attr/actionBarSize"
android:background="@color/white"
android:orientation="vertical">

<ExpandableListView
android:id="@+id/list_slidermenu"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:background="@color/white"
android:choiceMode="singleChoice"
android:dividerHeight="1dp"
android:drawSelectorOnTop="true"
android:groupIndicator="@null"
android:paddingBottom="13dp"
android:paddingLeft="7dp"
android:paddingRight="7dp"
android:paddingTop="13dp"></ExpandableListView>

</RelativeLayout>

</android.support.v4.widget.DrawerLayout>

ExpandableHeightGridView

public class ExpandableHeightGridView extends GridView
{

boolean expanded = false;

public ExpandableHeightGridView(Context context)
{
super(context);
}

public ExpandableHeightGridView(Context context, AttributeSet attrs)
{
super(context, attrs);
}

public ExpandableHeightGridView(Context context, AttributeSet attrs,
int defStyle)
{
super(context, attrs, defStyle);
}

public boolean isExpanded()
{
return expanded;
}

@Override
public void onMeasure(int widthMeasureSpec, int heightMeasureSpec)
{
// HACK! TAKE THAT ANDROID!
if (isExpanded())
{
// Calculate entire height by providing a very large height hint.
// View.MEASURED_SIZE_MASK represents the largest height possible.
int expandSpec = MeasureSpec.makeMeasureSpec(MEASURED_SIZE_MASK,
MeasureSpec.AT_MOST);
super.onMeasure(widthMeasureSpec, expandSpec);

ViewGroup.LayoutParams params = getLayoutParams();
params.height = getMeasuredHeight();
}
else
{
super.onMeasure(widthMeasureSpec, heightMeasureSpec);
}
}

public void setExpanded(boolean expanded)
{
this.expanded = expanded;
}
}

ExpandableHeightGridView 也用在另一个 Activity 中并且有效。

有什么想法吗?

最佳答案

1) 在您的 ExpandableHeightGridView 类中,在您的 onMeasure 覆盖方法中使用以下代码。它适用于我的情况。

@Override
public void onMeasure(int widthMeasureSpec, int heightMeasureSpec) {
int expandSpec = MeasureSpec.makeMeasureSpec(Integer.MAX_VALUE >> 2,
MeasureSpec.AT_MOST);
super.onMeasure(widthMeasureSpec, expandSpec);
}

或者

2) 在您的代码中,您可能需要调用 ExpandableHeightGridView 类的 setExpanded 方法并将其设置为 true

希望其中一种解决方案对您有用。

关于android - 带有 ExpandableHeightGridView 的 ScrollView 不滚动,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38144910/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com