使ExpandableListView和Textview一起滚动

时间:2016-02-17 16:55:23

标签: android xml textview scrollview expandablelistview

我有这个代码xml布局,我试图在圆形安卓手表中实现。我希望TextView上方的ExpandableListView滚动它而不是停留在顶部并占用空间。

我尝试使用ScrollView而不是RelativeLayoutScrollView RelativeLayout,反之亦然),但这样做的是LinearLayout要求ExpandableListView的设置高度显示列表,这是列表动态更改时不可能的(因此它可以有一个随机数的组成员),如果我使用“wrap_content”它只显示一次一组。每个小组也有4名儿童成员。

有人可以告诉我如何使这个布局适合我,以便TextViewExpandableListAdapter滚动在一起而不会有ExpandableListAdapter的设定高度吗?

round_activity_card_view_layout.xml

<?xml version="1.0" encoding="utf-8"?>
<ScrollView
    xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:tools="http://schemas.android.com/tools"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    tools:context="com.jawad.wifihotspotfinder.CardViewLayout"
    tools:deviceIds="wear_round"
    android:background="#FF3C00"
    android:smoothScrollbar="true">

        <LinearLayout
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:orientation="vertical"
            android:paddingTop="20dp"
            android:paddingLeft="15dp"
            android:paddingRight="10dp"
            android:paddingBottom="10dp">

            <TextView
                android:layout_width="match_parent"
                android:layout_height="wrap_content"
                android:id="@+id/cardViewHeader"
                android:textSize="17sp"
                android:textColor="@color/white"
                android:fontFamily="sans-serif"
                android:paddingLeft="20dp"
                android:paddingRight="5dp"/>

            <ExpandableListView
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:id="@+id/round_expandableListView"
                android:background="#FF3C00"
                android:choiceMode="multipleChoice"
                android:groupIndicator="@null"
                android:longClickable="true"/>

        </LinearLayout>

</ScrollView>

2 个答案:

答案 0 :(得分:2)

查看addHeaderView(View v)。以编程方式创建TextView或从XML扩充,然后使用该方法将其添加到ExpandableListView

然后TextView应该使用ExpandableListView滚动。

答案 1 :(得分:2)

感谢您告诉我该怎么做,Alex。我不得不想出一些方法来做那些花了很长时间,但最终做对了。感谢您的指示,这对我帮助很大!使用的代码如下:

LinearLayout mLayout = (LinearLayout) getLayoutInflater().inflate(R.layout.expandable_header, expListView, false);
mLayout.setLayoutParams(new AbsListView.LayoutParams(LinearLayout.LayoutParams.WRAP_CONTENT, LinearLayout.LayoutParams.WRAP_CONTENT));
expListView.addHeaderView(mLayout);

还有更改的xml文件:

expandable_header.xml

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

    <TextView
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:id="@+id/expCardViewHeader"
        android:textSize="17sp"
        android:textColor="@color/white"
        android:fontFamily="sans-serif"
        android:paddingLeft="20dp"
        android:paddingRight="5dp"
        android:paddingBottom="2dp"
        android:background="#FF3C00"
        android:text="@string/no_results"/>

</LinearLayout>

round_activity_card_view_layout.xml

<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout
    xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:tools="http://schemas.android.com/tools"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    tools:context="com.jawad.wifihotspotfinder.CardViewLayout"
    tools:deviceIds="wear_round"
    android:background="#FF3C00"
    android:smoothScrollbar="true">

    <LinearLayout
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:orientation="vertical"
        android:background="#FF3C00"
        android:paddingTop="20dp"
        android:paddingLeft="15dp"
        android:paddingRight="10dp"
        android:paddingBottom="10dp">

        <ExpandableListView
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:id="@+id/round_expandableListView"
            android:background="#FF3C00"
            android:choiceMode="multipleChoice"
            android:groupIndicator="@null"
            android:longClickable="true"
            android:smoothScrollbar="true" />

    </LinearLayout>

</RelativeLayout>