更改Leanback库中DetailsFragment中操作按钮的默认选择颜色

时间:2016-09-08 08:14:16

标签: android android-tv leanback

enter image description here嗨,大家好,

我想在细节片段中更改操作按钮选择中出现的默认背景颜色。不知道如何实现相同的效果?

3 个答案:

答案 0 :(得分:3)

您可以使用styles.xml库提供的Lean Back来执行此操作。

  

Follow the steps below first

  1. 转到sdk - > extras - > android - > support - > v17 - > leanback - > res - > values

  2. 从那里将styles.xml文件复制到当前的leanback项目文件夹中。

  3. 现在项目中有style.xml个文件。

  4. 打开该文件,然后找到style

  5. <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));
}