【问题标题】:How to setup a listview first element pressed in a navigationview?如何设置在导航视图中按下的列表视图第一个元素?
【发布时间】:2017-02-26 00:21:11
【问题描述】:

我查看了Navigation drawer: How do I set the selected item at startup? 的帖子。在那篇文章中,导航抽屉有一个菜单视图,而我的导航抽屉有一个列表视图。

我有一个导航抽屉和一个列表初始化。我已经设置了我的列表,无论何时选择项目,该项目都处于按压状态,并突出显示所选列表项目。该函数运行良好,如下所示。

activityBinding.list.setOnItemClickListener((parent, view, position, id) -> {
                parent.getChildAt(position).setPressed(true);
});

我有一个 xml,它是在 listviev textcolor 属性上设置的。 xml 看起来像这样:

<item android:state_pressed="true"
    android:color="#ffffffff"/> 
<item android:state_focused="true"
    android:color="#ff0000ff"/> 
<item android:color="#00000000"/>  

但是,我想在打开抽屉之前将列表的第一项设置为默认按下。我的问题是:如何获取列表中的一项并将其设置为在 setOnItemListener 之外按下?

【问题讨论】:

标签: android listview navigation-drawer pressed


【解决方案1】:

activityBinding.list.getChildAt(0).setPressed(true)

但你应该使用NavigationView 而不是ListView。

【讨论】:

【解决方案2】:

我找到了解决问题的方法。

activityBinding.list.getViewTreeObserver().addOnGlobalLayoutListener(new ViewTreeObserver.OnGlobalLayoutListener() {

            @Override
            public void onGlobalLayout() {
                activityBinding.list.getChildAt(0).setPressed(true);
                activityBinding.list.getViewTreeObserver().removeGlobalOnLayoutListener(this);
            }
        });

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-02-06
    • 2016-08-09
    • 1970-01-01
    相关资源
    最近更新 更多