答案 0 :(得分:3)
您可以使用styles.xml
库提供的Lean Back
来执行此操作。
Follow the steps below first
。
转到sdk
- > extras
- > android
- > support
- > v17
- > leanback
- > res
- > values
。
从那里将styles.xml
文件复制到当前的leanback项目文件夹中。
现在项目中有style.xml
个文件。
打开该文件,然后找到style
。
<style name="Widget.Leanback.DetailsActionButtonStyle" parent="Widget.Leanback.DetailsActionButtonStyleBase">
在里面你可以添加下面的属性,你将改变它的背景颜色。
<item name="android:background">@color/lb_speech_orb_recording</item>
我已经对此进行了测试,并且如果您遇到任何问题,请联系我们。
希望这能帮助您获得您所需的一切。
答案 1 :(得分:2)
我不喜欢将styles.xml复制到我自己的项目中的想法。我这样做的方法是在ArrayObjectAdapter构造函数中提供一个自定义的演示者。如果您不提供演示者,则DetailsOverviewRow会为您插入默认演示者。
public class ActionPresenter extends Presenter {
@Override public ViewHolder onCreateViewHolder(ViewGroup parent) {
View v = LayoutInflater.from(parent.getContext()).inflate(R.layout.custom_action, parent, false);
return new ViewHolder(v);
}
@Override public void onBindViewHolder(ViewHolder viewHolder, Object item) {
Button button = (Button) viewHolder.view;
Action action = (Action) item;
button.setText(action.getLabel1());
}
@Override public void onUnbindViewHolder(ViewHolder viewHolder) {
}
}
和custom_action.xml
<?xml version="1.0" encoding="utf-8"?>
<Button xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:lines="1"
android:paddingStart="10dp"
android:paddingEnd="10dp"
android:includeFontPadding="false"
android:background="@drawable/action_selector"
style="?android:attr/borderlessButtonStyle"
/>
然后在详细信息片段中,您可以像使用任何其他适配器/演示者一样使用它
ArrayObjectAdapter actionsAdapter = new ArrayObjectAdapter(new ActionPresenter());
actionsAdapter.add(new Action(0, "Watch Now"));
actionsAdapter.add(new Action(1, "More Info"));
row.setActionsAdapter(actionsAdapter);
答案 2 :(得分:0)
换句话说,
可以像这样使用DetailsOverviewRowPresenter
进行设置;
private void setupDetailsOverviewRowPresenter() {
// Set detail background and style.
DetailsOverviewRowPresenter detailsPresenter =
new DetailsOverviewRowPresenter(new DetailsDescriptionPresenter());
detailsPresenter.setBackgroundColor(getResources().getColor(R.color.details_fragment_background_color));
}