如何在Android中使用按钮单击来展开和隐藏Scrollviews

时间:2012-07-11 21:01:18

标签: android button hide scrollview expand

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

当我单击一个按钮时,该按钮应保持高亮显示,其下方应显示带有文本的滚动视图,并按下该按钮下方的按钮(如果需要,甚至可以关闭屏幕)。重新点击按钮后,滚动视图将再次隐藏。

如何在单击按钮时隐藏和重新显示滚动视图?

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

1 个答案:

答案 0 :(得分: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 */)
            )
}

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

基本上只需看看developer website即可。这个example也有些帮助,但开发人员的网站还有很长的路要走。

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


关注

  

他把createGroupList()。看起来这是他评论的一个功能   出。这到底是做什么的?

他基本上是在该函数中创建List 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;
        }

如果有效,请告诉我。