介绍
因为当前项目的设置已被加密,客户不希望通过下拉窗口的设置图标进入设置,决定去掉该图标。
效果展示

分析
修改
        <com.android.systemui.statusbar.AlphaOptimizedFrameLayout
            android:id="@+id/settings_button_container"
            android:layout_width="@dimen/qs_footer_action_button_size"
            android:layout_height="@dimen/qs_footer_action_button_size"
            android:background="@drawable/qs_footer_action_circle"
            android:clipChildren="false"
            android:clipToPadding="false">
            <com.android.systemui.statusbar.phone.SettingsButton
                android:id="@+id/settings_button"
                android:layout_width="@dimen/qs_footer_icon_size"
                android:layout_height="@dimen/qs_footer_icon_size"
                android:layout_gravity="center"
                android:background="@android:color/transparent"
                android:focusable="false"
                android:clickable="false"
                android:importantForAccessibility="yes"
                android:contentDescription="@string/accessibility_quick_settings_settings"
                android:scaleType="centerInside"
                android:src="@drawable/ic_settings"
                android:tint="?android:attr/textColorPrimary" />
        </com.android.systemui.statusbar.AlphaOptimizedFrameLayout> 
 
    override fun onFinishInflate() {
        super.onFinishInflate()
        settingsContainer = findViewById(R.id.settings_button_container)
        multiUserSwitch = findViewById(R.id.multi_user_switch)
        multiUserAvatar = multiUserSwitch.findViewById(R.id.multi_user_avatar)
        // RenderThread is doing more harm than good when touching the header (to expand quick
        // settings), so disable it for this view
        if (settingsContainer.background is RippleDrawable) {
            (settingsContainer.background as RippleDrawable).setForceSoftware(true)
        }
        importantForAccessibility = View.IMPORTANT_FOR_ACCESSIBILITY_YES
    }
    private fun updateVisibilities(
        multiUserEnabled: Boolean
    ) {
        settingsContainer.visibility = if (qsDisabled) GONE else VISIBLE
        multiUserSwitch.visibility = if (multiUserEnabled) VISIBLE else GONE
        val isDemo = UserManager.isDeviceInDemoMode(context)
        //*/soda water.20240109 Remove the drop-down Settings entry
        settingsContainer.visibility = GONE
        /*
        settingsContainer.visibility = if (isDemo) INVISIBLE else VISIBLE
        */
    }









