问题:遥控按键选中的选项有跑马灯效果,但是鼠标事件来说,没有跑马灯效果
解题过程:重写一个类继承textview,永远获取焦点,不行。即使我再OnhoverListener里面实现onHover并且对textview获取了焦点,但是仍旧不行
解决方法:最后重写一个类继承textview,永远获取焦点,并且对textview调用了setSelected(true)之后就可以了。
public class MarqueeTextView extends TextView { public MarqueeTextView(Context con) { super(con); } public MarqueeTextView(Context context, AttributeSet attrs) { super(context, attrs); } public MarqueeTextView(Context context, AttributeSet attrs, int defStyle) { super(context, attrs, defStyle); } @Override public boolean isFocused() { return true; } @Override protected void onFocusChanged(boolean focused, int direction, Rect previouslyFocusedRect) { } }
<com.jrm.localmm.ui.view.MarqueeTextView android:id="@+id/ListNameTextView" android:layout_width="wrap_content" android:layout_height="wrap_content" android:ellipsize="marquee" android:gravity="left" android:layout_marginLeft="2dip" android:marqueeRepeatLimit="marquee_forever" android:singleLine="true" android:textColor="@android:color/white" android:textSize="15sp" > </com.jrm.localmm.ui.view.MarqueeTextView>
holder.settingOptionTextView.setSelected(true);
另外总结下AN TV下的鼠标,遥控按键事件:
首先对于selector而言,在TV下面只有遥控按键能够触发全部的事件:focus,selected,press
<?xml version="1.0" encoding="UTF-8"?> <selector xmlns:android="http://schemas.android.com/apk/res/android"> <!-- 无焦点状怿--> <item android:state_focused="false" android:state_selected="false" android:state_pressed="false" android:drawable="@android:color/transparent" /> <item android:state_focused="false" android:state_selected="true" android:state_pressed="false" android:drawable="@drawable/list_foucs" /> <!-- 焦点状怿--> <item android:state_focused="true" android:state_selected="false" android:state_pressed="false" android:drawable="@drawable/list_foucs" /> <item android:state_focused="true" android:state_selected="true" android:state_pressed="false" android:drawable="@drawable/list_foucs" /> <!-- 按下状怿--> <item android:state_pressed="true" android:drawable="@drawable/list_foucs" /> </selector>
鼠标能触发的只要点击的时候的press事件。
至于在鼠标操控下要怎么模仿按键事件选择某个item之后,背景图像变化的话 ,只能间接通过设置item的背景图像来实现了
//refresh the focus state of listview item public void refreshItemFocusState(int index) { // TODO Auto-generated method stub Log.d(TAG, "refreshItemFocusState index = "+index) ; currentSelectedItemView = listView.getChildAt(index); if(isEnterListviewLocation){ if(oldSelectedItemView != null) oldSelectedItemView.setBackgroundResource(R.drawable.button_normal) ; if(currentSelectedItemView != null) currentSelectedItemView.setBackgroundResource(R.drawable.list_foucs); oldSelectedItemView = currentSelectedItemView ; } }
时间: 2024-10-12 11:09:48