listview 中,textview的Ellipsize属性marquee失效问题
老师您好,问题如题目,虽找到了解决方法呢,动态设置singleline selected属性,但是引起textVIew点击不流畅或根本点不上的问题,请问为什么会发生这样的冲突?
package com.example.homework4_2.adapter;
import android.content.Context;
import android.text.TextUtils;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.BaseAdapter;
import android.widget.ListView;
import android.widget.TextView;
import com.example.homework4_2.R;
import com.example.homework4_2.entity.News;
import java.util.List;
import java.util.zip.Inflater;
public class FavListViewAdapter extends BaseAdapter {
List<News> newsList;
Context context;
public FavListViewAdapter(Context context , List<News> newsList){
this.newsList = newsList;
this.context = context;
}
@Override
public int getCount() {
return newsList.size();
}
@Override
public Object getItem(int position) {
return newsList.get(position);
}
@Override
public long getItemId(int position) {
return position;
}
@Override
public View getView(int position, View convertView, ViewGroup parent) {
ViewHolder holder;
if (convertView == null){
convertView = LayoutInflater.from(context).inflate(R.layout.fav_item_layout, parent, false);
holder = new ViewHolder();
holder.textView = (TextView) convertView.findViewById(R.id.tV_fav_item);
convertView.setTag(holder);
}else {
holder = (ViewHolder) convertView.getTag();
}
setTextViewMarquee(holder);
holder.textView.setText(newsList.get(position).getNewsTitle());
return convertView;
}
private void setTextViewMarquee(ViewHolder holder){
// TODO: 2019/6/23 这里有的属性会使listview 的 item 的 onitemclicked 冲突导致不可点击或点击不顺畅,请问老师这是为什么?
holder.textView.setSingleLine(true);
// holder.textView.setSelected(true);
// holder.textView.setClickable(true);
// holder.textView.setFocusable(true);
// holder.textView.setFocusableInTouchMode(true);
// holder.textView.setEllipsize(TextUtils.TruncateAt.MARQUEE);
holder.textView.setEllipsize(TextUtils.TruncateAt.END);
}
private class ViewHolder{
TextView textView;
}
}另外这个问题已在上传作业的todo中提到了,希望老师您能解答下,谢谢!
7
收起
正在回答
1回答
这是因为TextView需要在获取焦点时才会滚动,而如果加了setFocusable为true,ListView的焦点被TextView抢走,无法响应点击事件。解决方法:自定义一个View继承系统的TextView,覆盖isFocused()方法,直接返回true,这是因为系统会调用isFocused()方法判断TextView是否已经取到焦点。祝:学习愉快
相似问题
登录后可查看更多问答,登录/注册
2.Android 网络操作与流行框架
- 参与学习 人
- 提交作业 220 份
- 解答问题 1800 个
本阶段是联网及数据处理的必备技能。课程从网络基础知识到线程间协同工作、异步下载处理;从文件存储、到轻量级数据库SQLite的使用;最后利用最流程的第三方框架助你快速开发企业级APP。
了解课程
恭喜解决一个难题,获得1积分~
来为老师/同学的回答评分吧
0 星