ListView 中的可选 TextView(缺少动画)
Posted
技术标签:
【中文标题】ListView 中的可选 TextView(缺少动画)【英文标题】:Selectable TextView in a ListView (Animation missing) 【发布时间】:2012-06-24 18:48:00 【问题描述】:我用自定义适配器构建了一个 ListView,这样我就有了一个 Checkbox(当时不可见)和一个 TextView 来显示一些文本。
现在我想在列表中选择一个项目时有漂亮的动画(当你触摸元素时背景是蓝色的)。这可能吗?
我已经添加了一个 OnLongTouchListener,它可以工作,但没有动画!
得到一些帮助会很酷:)
布局-XML
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_
android:layout_
android:orientation="horizontal" >
<CheckBox
android:id="@+id/list_checkbox"
android:layout_
android:layout_
android:checked="false"
android:visibility="gone"
android:text=""
android:focusable="false"
android:clickable="false">
</CheckBox>
<TextView
android:id="@+id/list_text"
android:layout_
android:layout_
android:textAppearance="?android:attr/textAppearanceLarge"
android:text=""
android:clickable="true"
android:longClickable="true" >
</TextView>
</LinearLayout>
Java 代码:
private class CommunityListAdapter extends ArrayAdapter<Community>
private List<Community> items;
private Context context;
public CommunityListAdapter(Context context, List<Community> communities)
super(context, R.layout.list_item, communities);
this.items = communities;
this.context = context;
@Override
public View getView(int position, View convertView, ViewGroup parent)
View view = convertView;
if (view == null)
LayoutInflater inflater = (LayoutInflater) context
.getSystemService(Context.LAYOUT_INFLATER_SERVICE);
view = inflater.inflate(R.layout.list_item, null);
Community item = items.get(position);
if(item != null)
TextView textView = (TextView) view.findViewById(R.id.list_text);
if(textView != null)
textView.setText(item.getName());
textView.setOnLongClickListener(new OnLongClickListener()
public boolean onLongClick(View view)
startActionMode(new MultiChoiseCABListener());
Toast.makeText(context, "TEST", 10).show();
return false;
);
return view;
【问题讨论】:
我用一些代码编辑了这个问题! 【参考方案1】:在您的可绘制对象中创建按下状态 xml,您可以在其中设置不同的位图以在不同的点击状态下显示,并将该 xml 设置为您的主要布局背景。
示例状态 xml。
list_item_bg_state.xml
<selector xmlns:android="http://schemas.android.com/apk/res/android">
<item android:state_pressed="true" android:drawable="@drawable/blue_bg" />
<item android:drawable="@drawable/white_bg"/>
</selector>
其中 blue_bg 和 white_bg 是可绘制对象中的两个.png 图像。
注意上面的 xml 应该在你的 drawables 文件夹中。现在将此 xml 设置为列表项主布局的背景。喜欢,
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_
android:layout_
android:background="@drawable/list_item_bg_state"
android:orientation="horizontal" >
</LinearLayout>
问候, 阿奇夫
【讨论】:
不幸的是,这对我不起作用!标准背景可以正常工作,但点击不会改变任何东西!【参考方案2】:您还没有定义动画,请定义动画并与此视图关联。
Animation a = new AlphaAnimation(1.00f, 0.00f);
a.setDuration(1000);
YOURTEXTVIEW.startAnimation(a);
【讨论】:
这是什么意思?你能给我一个教程或文档的链接吗?抱歉,我刚开始为 Android 开发,但找不到。 我已添加说明...如果有帮助,请接受答案以上是关于ListView 中的可选 TextView(缺少动画)的主要内容,如果未能解决你的问题,请参考以下文章