使 Listview 的 Header-/FooterView 的一部分可选择
我有一个 ListView
,其中通过
list.addFooterView(getLayoutInflater().inflate(R.layout.list_footer_view, null, true), null,true);
list_footer_view.xml 设置了自定义页脚,如下所示:
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:orientation="vertical" android:layout_width="fill_parent"
android:layout_height="fill_parent" android:descendantFocusability="afterDescendants" android:focusable="false">
<LinearLayout android:onClick="onProfileClick"
android:focusable="true" android:clickable="true">
<TextView android:text="@string/footer_text"
style="@style/Text" android:layout_width="wrap_content"
android:layout_height="wrap_content" android:layout_weight="1" />
</LinearLayout>
... other views which should not be focusable
</LinearLayout>
问题是,在非触摸模式下,仅选择整个页脚。正如您所看到的,我已经尝试通过 descendantFocusability
和 focusable
属性来操纵选择行为。没有成功。在触摸模式下,单击第一个 LinearLayout
有效。
我还尝试将第三个 addFooterView
参数设置为 false。
如何仅选择页脚视图的子元素?
I have a ListView
with a custom footer set via
list.addFooterView(getLayoutInflater().inflate(R.layout.list_footer_view, null, true), null,true);
list_footer_view.xml looks like this:
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:orientation="vertical" android:layout_width="fill_parent"
android:layout_height="fill_parent" android:descendantFocusability="afterDescendants" android:focusable="false">
<LinearLayout android:onClick="onProfileClick"
android:focusable="true" android:clickable="true">
<TextView android:text="@string/footer_text"
style="@style/Text" android:layout_width="wrap_content"
android:layout_height="wrap_content" android:layout_weight="1" />
</LinearLayout>
... other views which should not be focusable
</LinearLayout>
The problem is, in non-touch-mode only the whole footer gets selected. As you see I have already tried to manipulate the selection behavior via the descendantFocusability
and focusable
attributes. Without success. In touchmode clicking the first LinearLayout
works.
I have also tried with setting the third addFooterView
parameter to false.
How can you select only child-elements of the footer-view?
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(1)
您还应该在 ListView 上调用 setItemsCanFocus(true)。所以实际上需要做两件事:
您可能还需要为需要可聚焦的元素设置 focusable="true"。这是一个示例:
poi_details_buttons.xml:
PoiFragment.java:
You should also call setItemsCanFocus(true) on ListView. So there are actually two things needed to be done:
You may also need to set focusable="true" for your elements you need to be focusable. Here's an example:
poi_details_buttons.xml:
PoiFragment.java: