Far*_*deh 8 android scroll android-listview navigation-drawer
我一直在为我的某个应用程序添加一个导航抽屉,我开始想知道从导航抽屉列表项目中使用a ListView到多个TextViews 切换是否更好.看一下关于导航抽屉内容的Google设计指南(特别是关于'滚动'的部分),我注意到它可能看起来更好用多个TextViews.
目前,我正在使用一个ListView和ImageView我的导航抽屉(它看起来有点像这样.但是,当我滚动导航抽屉时(我通过转动我的设备景观来实现这一点,因为我的列表中没有足够的项目) ,只有ListView卷轴,并ImageView保持原样.我希望它能够像这样ImageViewListView scoll ,其中也滚动了.
另外,我发现ListView我的导航抽屉中没有如图中所示的涟漪效果,尽管ListView我的其他Activitys和Fragments中的其他s .
我面临的问题是什么?如何解决这些问题?
在Google的I/O应用程序(2014)中,导航抽屉布局LinearLayout的底部似乎有一个我认为负责显示的项目列表.有人可以解释这是如何工作的吗?
只有 ListView 滚动,而 ImageView 保持原样
听起来你的抽屉ImageView顶部有一个,然后是一个ListView。使用此配置,只有ListView滚动(因为它是唯一可滚动的视图)。
您需要添加ImageView作为标题,该标题始终位于列表的开头。正如评论之一所建议的那样,执行listView.addHeaderView.
导航抽屉布局的底部似乎有一个 LinearLayout,我认为它负责显示的项目列表。有人可以解释这是如何工作的吗?
他们使用 来LinearLayout作为容器来容纳所有的TextViews:
private void createNavDrawerItems() {
mDrawerItemsListContainer = (ViewGroup) findViewById(R.id.navdrawer_items_list);
...
int i = 0;
for (int itemId : mNavDrawerItems) {
mNavDrawerItemViews[i] = makeNavDrawerItem(itemId, mDrawerItemsListContainer);
mDrawerItemsListContainer.addView(mNavDrawerItemViews[i]);
++i;
}
}
Run Code Online (Sandbox Code Playgroud)
我相信他们使用 a 并以编程方式膨胀所有项目的原因LinearLayout是能够轻松使用分隔符项目:
private View makeNavDrawerItem(final int itemId, ViewGroup container) {
...
if (itemId == NAVDRAWER_ITEM_SEPARATOR) {
layoutToInflate = R.layout.navdrawer_separator;
} else if (itemId == NAVDRAWER_ITEM_SEPARATOR_SPECIAL) {
layoutToInflate = R.layout.navdrawer_separator;
} else {
layoutToInflate = R.layout.navdrawer_item;
}
...
return view;
}
Run Code Online (Sandbox Code Playgroud)
在 a 中,ListView您必须创建一个单独的项目类型并在那里使用分隔符的布局,这可能会变得更加麻烦。
然而,乍一看,这段代码似乎只是在重新发明轮子,因为所有这一切都可以通过ListView.
| 归档时间: |
|
| 查看次数: |
4412 次 |
| 最近记录: |