2 gentlemantt gentlemantt 于 2014.04.23 17:01 提问

无法再android系统setting中的actionbar中添加switch

在系统setting中添加了一个自己的选项。可惜在界面中的actionbar上无法添加switch
系统的蓝牙setting中有相同的结构。源码的添加switch代码如下:
大神们!!!求解啊!!!!!!
Activity activity = getActivity();

    Switch actionBarSwitch = new Switch(activity);

    if (activity instanceof PreferenceActivity) {
        PreferenceActivity preferenceActivity = (PreferenceActivity) activity;
        if (preferenceActivity.onIsHidingHeaders() || !preferenceActivity.onIsMultiPane()) {
            final int padding = activity.getResources().getDimensionPixelSize(
                    R.dimen.action_bar_switch_padding);
            actionBarSwitch.setPadding(0, 0, padding, 0);
            activity.getActionBar().setDisplayOptions(ActionBar.DISPLAY_SHOW_CUSTOM,
                    ActionBar.DISPLAY_SHOW_CUSTOM);
            activity.getActionBar().setCustomView(actionBarSwitch, new ActionBar.LayoutParams(
                    ActionBar.LayoutParams.WRAP_CONTENT,
                    ActionBar.LayoutParams.WRAP_CONTENT,
                    Gravity.CENTER_VERTICAL | Gravity.RIGHT));
        }
    }

2个回答

Diaoliangwang
Diaoliangwang   2015.10.23 11:01

系统里根本不是这样实现的 是自定义的switchbar 里面那个也不是switch 控件,是用toggleslider实现的

u012301841
u012301841   2016.04.04 16:23

楼主搞错了,系统的蓝牙界面根本不是这样实现的。在系统的 com.android.settings.widget 包下,有个SwitchBar控件,是写在 settings的布局文件中的,文件名为:
R.layout.settings_main_prefs。(我现在看的是5.0的源码,4.0的好像有点不一样)

Csdn user default icon
上传中...
上传图片
插入图片