我想在Android中的ListView上创建自定义效果。我有一个包含文本项目的列表 - 一种菜单。当Android更改list元素下的背景时,我想更改文本的颜色(并为其添加阴影!)。
我有一个自定义视图(扩展了TextView),我覆盖了onTouchEvent()
函数,并创建了一个函数,它可以改变文本的颜色。
@Override
public boolean onTouchEvent(MotionEvent event){
Log.v(TAG, "" + event.getAction());
if (event.getAction() == MotionEvent.ACTION_DOWN){
Log.v(TAG, "Touch started.");
setShadowLayer(6, 0, 0, getResources().getColor(R.color.selectedTextShadow));
setTextColor(getResources().getColor(R.color.selectedTextColor));
boolean b = super.onTouchEvent(event);
Log.v(TAG, "Action down, super returns: " + (b ? "true" : "false"));
//return true;
}
return super.onTouchEvent(event);
}
public void endSelection(){
setShadowLayer(0, 0, 0, getResources().getColor(R.color.textColor));
setTextColor(getResources().getColor(R.color.textColor));
}
在ListFragment中,我覆盖onListItemClick()
函数,调用视图的endSelection
函数。
@Override
public void onListItemClick (ListView l, View v, int position, long id){
Log.v(TAG, "Clicked on: " + position);
((ListRowText) v.findViewById(R.id.subMenuRow_menuItem)).endSelection();
}
几乎是全押。但是(正如你在this视频中看到的那样),当我在其他地方“滑动”我的手指并且颜色“卡住”时,它不会改变颜色。
有没有更好的方法,这样做? 我找到了StateListDrawable,但是我无法为StateListDrawable添加阴影。或者我可以吗? 谢谢!
答案 0 :(得分:0)
顺便看看UI。您可能希望查看Android Asset Studios的Holo colors generator并生成列表选择器,以查看正在跟踪的所有事件。对于单个列表项视图,您可能希望为文本视图创建一个单独的状态列表,并根据列表选择器对其进行样式设置。以下是生成的选择器处理的状态列表:
答案 1 :(得分:0)
正如Patty P所说,你可以创建一个状态选择器,但在你的情况下,我认为你想要的是一个文本选择器。
http://developer.android.com/guide/topics/resources/color-list-resource.html
您只需在res文件夹中创建一个名为color的文件夹,就可以添加选择器,就像列表选择器一样。
然后您可以将其用作文本颜色。
州是相同的