首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >ListItem焦点变化

ListItem焦点变化
EN

Stack Overflow用户
提问于 2014-09-10 11:33:36
回答 2查看 2K关注 0票数 0

我有一个定制的listView,其中包含一些视图(比如textView和imageView)。当列表项获得焦点时,我想更改它的背景色。我已经为我的转换视图设置了OnfocusChange,但是它不起作用。这是我的霍尔德班:

代码语言:javascript
复制
private class Holder {
    ImageView iconImage;
    TextView titleText ;
    TextView costText ;
    }

和getView方法:

代码语言:javascript
复制
@Override
public View getView(int position, View convertView, ViewGroup parent) {
    final Item item = item.get(position);

    final Holder temp;

    if (convertView == null) {
        convertView = inflater.inflate(R.layout.list_item, null);
        temp = new Holder();
        temp.iconImage = (ImageView) convertView
                .findViewById(R.id.iconImageView);

        temp.titleText = (TextView) convertView
                .findViewById(R.id.titleTextView);
        temp.costText = (TextView) convertView
                .findViewById(R.id.costTextView);

        convertView.setTag(temp);
    } else {
        temp = (Holder) convertView.getTag();
    }
    temp.titleText.setText(item.getItemTitle());
    //this focus listener doesn't work.
    convertView.setOnFocusChangeListener(new OnFocusChangeListener() {

        @Override
        public void onFocusChange(View v, boolean hasFocus) {
            if (hasFocus) {
                temp.titleText.setBackground(context.getResources()
                        .getDrawable(
                                R.drawable.green_background));

            } else {
                temp.titleText.setBackground(context.getResources()
                        .getDrawable(R.drawable.black_background));
            }
        }
    });

}

如何为列表视图中的每个列表项设置OnFocusChange侦听器?

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2014-09-13 10:13:57

经过几次搜索,我发现,在列表视图中使用focus,以便在选择列表项时更改其背景,并不是一个好的解决方案。因为焦点不在列表视图中,直到屏幕结束。实际上,如果您为您的onFocusChange设置了listView侦听器,它就不会再向下滚动(当然是用键盘),解决这个问题的更好的解决方案是setOnItemSelected。如果您想了解解决方案的更多细节,可以查看以下问题:

Programmatically select item ListView in Android

附加信息:我正在开发一个电视应用程序,没有触摸屏,我必须处理所有键盘事件。因此,对于普通的应用程序开发人员来说,这个问题可能不会发生。

票数 0
EN

Stack Overflow用户

发布于 2014-09-10 11:58:00

您是否尝试过将可聚焦和可聚焦模式设置为true?

代码语言:javascript
复制
android:focusable="true"
android:focusableInTouchMode="true"

并尝试将文本视图和图像视图的可聚焦设置为false。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/25764327

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档