android-tv - 如何以编程方式更改 Android TV 操作按钮文本颜色?
问题描述
val adapter = SparseArrayObjectAdapter()
adapter.set(ACTION_PLAY_VIDEO, Action(ACTION_PLAY_VIDEO.toLong(), resources.getString(R.string.play_asset)))
row.actionsAdapter = adapter
这是我在 AndroidTV 的 DetailPage 中的操作代码但我不知道如何以编程方式更改按钮文本颜色/按钮背景颜色,而不是在 xmls 中?
解决方案
给你的适配器一个演示者。
在 Java 中:
adapter.setPresenterSelector(new ClassPresenterSelector()
.addClassPresenter(Action.class, new Presenter() {
@Override
public ViewHolder onCreateViewHolder(ViewGroup parent) {
View view = LayoutInflater.from(parent.getContext()).inflate(R.layout.my_button_layout, parent, false);
return new ViewHolder(view);
}
@Override
public void onBindViewHolder(ViewHolder viewHolder, Object item) {
Button button = viewHolder.view.findViewById(R.id.my_button_id);
//do stuff here, like
button.setBackgroundColor(Color.BLUE);
button.setTextColor(Color.RED);
//or
button.setOnFocusChangeListener((view, hasFocus) -> {
if (hasFocus) {
//change color?
}
});
}
@Override
public void onUnbindViewHolder(ViewHolder viewHolder) {
//required override
}
})
);
推荐阅读
- javascript - ETIMEDOUT when making large(10k) post requests using axios.all nodejs
- django - how to create correct search when i use slug django
- javascript - Using something like ngRepeat in Javascript
- python - Files uploaded to s3 are missing content
- php - Docker PHP API causing 100% CPU Usage on Elastic Beanstalk
- java - Primefaces 8 - CONFIGURATION FAILED! Must have a Constructor that takes in a BehaviorConfig
- event-handling - Azure EventGrid 主题与 EventType
- android - Problem with ScrollView and SearchBar on Android / Expo-web
- ios - GoogleDataTransport/GDTCORLibrary/Public/GoogleDataTransport/GDTCORTransport.h' 文件未找到
- python - 按特定日期过滤日期框