Java 检查是否从ListView getView中省略自定义EllipsizingTextView
我想创建一个可扩展的文本视图,它显示在Java 检查是否从ListView getView中省略自定义EllipsizingTextView,java,android,android-listview,textview,ellipsis,Java,Android,Android Listview,Textview,Ellipsis,我想创建一个可扩展的文本视图,它显示在列表视图中。在我的列表视图适配器的获取视图方法中,我需要检查文本视图是否被省略以显示“展开”按钮 我正在使用旧的Android版本,因为有一个 EllipsizingTextView提供了一个名为isEllipsized的方法。当我在EllipsizingTextView的getView方法中调用此方法时,我总是得到false作为结果。我发现,isEllipsized方法只适用于已经绘制的视图 因此,我尝试使用TextView.post(Runnable-R
列表视图中。在我的列表视图
适配器
的获取视图
方法中,我需要检查文本视图是否被省略以显示“展开”按钮
我正在使用旧的Android版本,因为有一个
EllipsizingTextView提供了一个名为isEllipsized
的方法。当我在EllipsizingTextView的getView
方法中调用此方法时,我总是得到false
作为结果。我发现,isEllipsized
方法只适用于已经绘制的视图
因此,我尝试使用TextView.post(Runnable-Runnable)
从一个单独的Runnable
调用isEllipsized
。这适用于第一次加载列表项后在EllipsizingTextView中显示的第一个项
但是,当我向下滚动isEllipsized
时,总是返回false。然后再次向上滚动时,isEllipsized
为每个列表项返回正确的布尔值
有人知道我做错了什么吗?谢谢你的提示
下面是我在单独的类中使用的getView方法:
private EllipsizingTextView textView;
private int position;
@Override
public View getView(int position, View convertView, ViewGroup parent) {
ViewHolder holder = null;
if (convertView == null) {
holder = new ViewHolder();
convertView = inflater.inflate(R.layout.list_item, null, false);
holder.text = (EllipsizingTextView) convertView.findViewById(R.id.label);
convertView.setTag(holder);
} else {
holder = (ViewHolder) convertView.getTag();
}
holder.text.setText(position + " " + this.text);
this.textView = holder.text;
this.position = position;
Runnable r = new Runnable() {
@Override
public void run() {
Log.d("tag", TestObject.this.position +
" isEllipsized " + TestObject.this.textView.isEllipsized());
}
};
holder.text.post(r);
return convertView;
}
和我的XML:
<com.example.listviewtest.EllipsizingTextView
android:id="@+id/label"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:ellipsize="end"
android:maxLines="5"
</com.example.listviewtest.EllipsizingTextView>
相关/重复: