是否可以通过编程方式启用“显示布局边界”开发人员选项?

时间:2013-09-17 11:21:41

标签: android android-layout

例如,我可以使用:

来操纵ADB调试
Settings.Secure.putInt(getActivity().getContentResolver(),Settings.Secure.ADB_ENABLED, 1);

是否可以以类似的方式启用“显示布局边界”选项?我无法找到任何文件。

2 个答案:

答案 0 :(得分:2)

不,AFAIK它不可用。但是,我所做的一件事就是调整我的所有视图以查看它们的绑定位置以及它们重叠的位置等。您可以使用此代码,它使用droidQuery库来选择要迭代的所有视图:< / p>

public static void debugLayout(View layout)
{
    $.with(layout).selectAll().each(new Function() {
        @Override
        public void invoke($ d, Object... args) {
            View v = d.view(0);
            Drawable drawable = v.getBackground();
            if (drawable != null)
                drawable.setColorFilter(0xAAFF0000, PorterDuff.Mode.MULTIPLY);
            else
                drawable = new ColorDrawable(0xAAFF0000);
            try {
                //API 16+
                v.setBackground(drawable);
            }
            catch (Throwable t) {
                v.setBackgroundDrawable(drawable);
            }
        }
    });
}

答案 1 :(得分:1)

您可以采取一些措施来模拟设置代码实际执行的操作:
https://github.com/android/platform_packages_apps_settings/blob/master/src/com/android/settings/DevelopmentSettings.java#L942

private void writeDebugLayoutOptions() {
    SystemProperties.set(View.DEBUG_LAYOUT_PROPERTY,
        mDebugLayout.isChecked() ? "true" : "false");
    pokeSystemProperties();
}