我正在编写一个由 RCU 控制的 Android 应用程序,而不是由触摸事件/手指控制。此 RCU 有一个 UP、DOWN、LEFT、RIGHT 和 OK 键(简化)。这意味着在当前突出显示的图形对象上处理确定按钮。例如,想想旧 DVD 播放器的界面。
我正在尝试为此目的调整 ListView。假设我想展示一个包含 5 个选项的垂直列表:
- 是(红色)
- 也许(白)
- 当然(白)
- 可能(白色)
- 从不(白色)
最初,第一个选项是,应该是某种颜色(突出显示/焦点颜色),而其他 4 个选项是另一种颜色(默认颜色)。
当用户按下 UP 时,Maybe 被翻译到顶部并以高亮/焦点颜色显示;是添加在列表底部,并以默认颜色显示:
- 也许(红色)
- 当然(白)
- 可能(白色)
- 从不(白色)
- 是(白色)
可能的选项通过 ArrayAdapter 提供给 ListView:
public class DetailOptionsItemAdapter extends ArrayAdapter<String> {
public DetailOptionsItemAdapter(Context context, String[] options) {
super(context, R.layout.options, options);
}
}
在派生 ListView 的类的构造函数中:
setAdapter(new DetailOptionsItemAdapter(getContext(), new String[]{"Yes", ...})));
我的布局(R.layout.options)定义如下:
<TextView xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:gravity="center_vertical"
android:textColor="@color/white"
android:textColorHighlight="@color/red"
android:includeFontPadding="true"
android:ellipsize="end"
android:singleLine="true"/>
当收到 UP 或 DOWN 时,我将请求的索引转换为顶部:
smoothScrollToPositionFromTop(... the index ..., 0);
这行得通。到目前为止,所有内容都以默认颜色白色显示。
现在我需要插入第一项始终是红色的。我尝试在旧位置获取视图并赋予它一段时间的颜色,然后在新位置获取视图并赋予它红色,但没有成功。
任何想法?谢谢!