Android TV:在GuidedStepFragment(Leanback)中更改ActionView的选定颜色

时间:2019-07-04 09:14:15

标签: android android-tv leanback

当我扩展GuidedStepFragment时,动作列表中的动作选择为灰色。如何将其更改为蓝色?

public static class FirstStepFragment extends GuidedStepFragment {
    @NonNull
    @Override
    public GuidanceStylist.Guidance onCreateGuidance(Bundle savedInstanceState) {
        String title = "Title";
        String breadcrumb = "Breadcrumb";
        String description = "Description";
        Drawable icon = getActivity().getDrawable(R.drawable.ic_videocam_black_24dp);

        return new GuidanceStylist.Guidance(title, description, breadcrumb, icon);
    }

    @Override
    public void onCreateActions(@NonNull List actions, Bundle savedInstanceState) {
        addAction(actions, ACTION_CONTINUE, "Continue", "Go to SecondStepFragment");
        addAction(actions, ACTION_BACK, "Cancel", "Go back");
    }


    }
}

2 个答案:

答案 0 :(得分:0)

您可以覆盖onCreateActionsStylist并返回GuidedActionsStylist,在其中您可以使用自己的选择器在onProvideLayout中提供自定义布局文件,选择器的选定状态为蓝色。

    @Override
    public GuidedActionsStylist onCreateActionsStylist() {
        return new GuidedActionsStylist() {
            @Override
            public int onProvideLayoutId() {
                //return your custom layout here
                return super.onProvideLayoutId();
            }

            @Override
            public int onProvideItemLayoutId(int viewType) {
                return super.onProvideItemLayoutId(viewType);
            }

            @Override
            public int getItemViewType(GuidedAction action) {
                return super.getItemViewType(action);
            }
        };
    }

答案 1 :(得分:0)

使用Theme.Leanback.GuidedStep作为父项定义新样式,然后使用您喜欢的guidedActionsSelectorDrawable更改其中的drawable,如下所示:

<style name="MyGuidedStep" parent="Theme.Leanback.GuidedStep">
    <item name="guidedActionsSelectorDrawable">@drawable/guided_action</item>
</style>

您必须将此样式设置为活动的主题,才能将更改应用于guidedStepFragment。请注意,您可以使用RippleDrawable,因为它是片段中的默认SelectorDrawable