1

我正在尝试创建一个带有 4 个按钮的页面。

当我单击一个按钮时,该按钮应保持突出显示状态,其下方应出现一个带有文本的滚动视图,然后按下该按钮下方的按钮(必要时甚至关闭屏幕)。再次单击按钮后,滚动视图将再次隐藏。

如何让滚动视图在单击按钮时隐藏并重新出现?

这就是我想要的样子:http: //img407.imageshack.us/img407/3448/47163794.png

4

1 回答 1

1

这是我最近所做的ExpandableListView。这相当容易。

它拥有迄今为止我在 android 中见过的最大的构造函数之一。


使用ExpandableListView.

<LinearLayout>

    <ExpandableListView>
        <!-- Set the properties, if you need to see them, let me know. -->
    </ExpandableListView>

</LinearLayout>

现在在某些视图中使用布局。

public void onCreate() {

    ExpandableListView example = findViewById(/* The id of the expandable list view */);


    example.setAdapter(
            new SimpleExpandableListAdapter(
                        /* the context */,
                        /* the map of parents/groups */,
                        /* the layout to map the parents/groups to */,
                        /* the key to search for in the parents/groups map */,
                        /* the id of the textview inside the layout to map the parent/group to */,
                        /* the map of children */,
                        /* the layout to map the children to */,
                        /* the key to search for in the children map */,
                        /* the id of the textview inside the layout to map the children to */)
            )
}

还有其他可用的适配器,但这是最基本的适配器。

基本上只要看看开发者网站。这个例子也有点帮助,但开发者的网站还有很长的路要走。

如果您有任何问题,请告诉我。


跟进

他把createGroupList()。看起来这是他注释掉的功能。这究竟是在做什么?

他基本上是在该函数中创建Listof并返回创建的对象。HashMaps是的,您应该这样做,它有助于使您的代码更简洁。

此外,这些列表显示得很小,无论如何要使它们更大?

修改TextView你有显示你的孩子和组。View在他们的xml布局中添加填充。只需调整dp. 你可以增加textSize或者你可以添加一个style像我在下面显示的。

<TextView 
        android:id="@+id/groupTextView"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        style="@android:style/TextAppearance.Medium"
        android:paddingLeft="50dp"
        android:paddingTop="25dp"
        android:paddingBottom="25dp"/>

我希望父组成为列表,但不希望子组成为子列表,我希望它们成为我可以添加文本的文本框(我从网上获取)。我如何制作子文本框而不是列表。

您可能需要为这种情况创建自己Adapter的。您将需要扩展BaseExpandableListAdapter. 我可能是错的,可能有更简单的方法......但我不知道。


额外的跟进

不明白你的意思。在子列表中输入的文本出现在这行代码中:child.put("Sub Item", "test")。我可以将我想要的文本放在“测试”的位置,但“测试”出现在每个父列表下。

createChildList需要返回一个List<ArrayList<HashMap<String, String>>>.

createChildList应该看起来像这样:

private List<ArrayList<HashMap<String, String>>> createChildList(int maxValue) {

                ArrayList<ArrayList<HashMap<String, String>>> groupList = 
                                new ArrayList<ArrayList<HashMap<String, String>>>();

                for (int i = 0; i <= maxValue; i++) {
                        ArrayList<HashMap<String, String>> childList = 
                                        new ArrayList<HashMap<String, String>>();

                        for (int j = 0; j <= maxValue; j++) {
                                HashMap<String, String> map = new HashMap<String, String>();

                                map.put("Sub Item", "test: " + String.valueOf(j));
                                childList.add(map);
                        }

                        groupList.add(childList);
                }

                return groupList;
        }

让我知道这是否有效。

于 2012-07-11T22:09:50.053 回答