算法问题在这里。
我正在创建一个显示法律文档的应用程序,其中包含导航标签(TOC,书签等)。 在TOC选项卡中,我需要显示多级目录。在toc的'叶子',我需要显示TextView
所以,我可以:
tab1:列表 - >清单 - >清单 - >清单 - >清单 - > TextView的
或
tab1:列表 - >清单 - >清单 - > TextView的
或
tab1:列表 - > TextView的
取决于我所展示的书的章节,小节,小节,小节结构。
现在,无论你有多深,TabHost都需要始终存在,以提供主导航。 (是的,我问,我需要使用标签,而不是菜单。)
问题:
如何在选项卡的FrameLayout中实现递归List?或者我应该使用ListView样式选项卡,只是不使用TabHost?
想法?
谢谢!
llappall
答案 0 :(得分:1)
好。您无法将ListViews
置于ListViews
,ScrollViews
,GridViews
或任何可滚动的内容(即ListView
项目不能ListView
)。它可能会编译,它可能会运行,但结果将不是您所期望或想要的。这是因为ListView
的高度不能设置为WRAP_CONTENT
。
您可以拥有两个级别的列表(ExpandableListView
),但如果您需要更多级别,则必须通过扩展ListView
或ExpandableListView
来实现自己的功能。
您还可以使用分段列表和包含多个项目类型的列表,但无法使用默认SDK组件来获取5级列表。
第二:是的,ListView
内可以有一个TabHost
。您将无法使用ListActivity
,但这只是意味着您必须直接调用ListView
方法:
ListView myList = findViewById(R.id.myList);
myList.setAdapter(myListAdapter);
而不是调用内置的ListActivity
方法。
只需将ListView
放在布局文件中的FrameLayout
内即可。如果您有三个标签,而ListView
是FrameLayout
中的第一个元素,则它将显示为第一个标签的内容。如果它是第二个元素,它将是第二个标签的内容,依此类推。
使用内置组件实现递归列表的唯一方法是使用单个ListView
,然后在用户选择项目时更改ListView
的适配器的内容(实质上)使用单个ListView的下钻菜单。您还需要使用onBackPressed
捕获后退按钮,以允许用户导航回列表,或在某处提供后退按钮。