android修改settings源码隐藏部分布局

本文介绍如何在Android应用中通过修改settings.java文件,动态调整settings_headers.xml布局,移除不适用的设置项,如WiFi、蓝牙、数据使用情况等,以优化用户体验。重点在于根据不同设备类型和可用功能进行条件判断,实现个性化设置菜单。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

隐藏部分不需要的布局不需要去settings_headers.xml里去掉布局。这样会报异常。

我们在settings.java文件的updateHeaderList(List<Header> target) 方法里修改即可。

找到对应的id,把不需要的都移除掉。


private void updateHeaderList(List<Header> target) {
        final boolean showDev = mDevelopmentPreferences.getBoolean(
                DevelopmentSettings.PREF_SHOW,
                android.os.Build.TYPE.equals("eng"));
        int i = 0;


        mHeaderIndexMap.clear();
        while (i < target.size()) {
        Header header = target.get(i);
       // Ids are integers, so downcasting
       int id = (int) header.id;
     //start modify by longqiong on 2014.12.08
       if (id == R.id.operator_settings || id == R.id.manufacturer_settings) {
           Utils.updateHeaderToSpecificActivityFromMetaDataOrRemove(this, target, header);
       } else if (id == R.id.wifi_settings) {
           // Remove WiFi Settings if WiFi service is not available.
           if (!getPackageManager().hasSystemFeature(PackageManager.FEATURE_WIFI)) {
               target.remove(i);
           }
       } else if (id == R.id.bluetooth_settings) {
           // Remove Bluetooth Settings if Bluetooth service is not available.
               target.remove(i);
       } else if (id == R.id.data_usage_settings) {
           // Remove data usage when kernel module not enabled
              target.remove(i);
       } else if (id == R.id.battery_settings) {
           // Remove battery settings when battery is not available. (e.g. TV)
               target.remove(i);
       } else if (id == R.id.account_settings) {
        target.remove(i);
       } else if (id == R.id.home_settings) {
               target.remove(i);
       } else if (id == R.id.user_settings) {
               target.remove(i);
       } else if (id == R.id.nfc_payment_settings) {
               target.remove(i);
       } else if (id == R.id.development_settings) {
               target.remove(i);
       } else if (id == R.id.account_add) {
               target.remove(i);
       } else if(id == R.id.print_settings){
        target.remove(i);
       }
       if (i < target.size() && target.get(i) == header
               && UserHandle.MU_ENABLED && UserHandle.myUserId() != 0
               && !ArrayUtils.contains(SETTINGS_FOR_RESTRICTED, id)) {
           target.remove(i);
       }
       if(i < target.size()){
           if(id == R.id.wireless_section 
            ||  id == R.id.bluetooth_settings
            ||  id == R.id.data_usage_settings
            ||  id == R.id.operator_settings
            ||  id == R.id.device_section
            ||  id == R.id.storage_settings
            ||  id == R.id.battery_settings
            ||  id == R.id.user_settings
            ){
            Log.e("long", "title = " + target.get(i).getTitle(getResources()));
            target.remove(i);
           }
       }
       //end modify by longqiong  
       // Increment if the current one wasn't removed by the Utils code.
       if (i < target.size() && target.get(i) == header) {
       
           // Hold on to the first header, when we need to reset to the top-level
           if (mFirstHeader == null &&
                   HeaderAdapter.getHeaderType(header) != HeaderAdapter.HEADER_TYPE_CATEGORY) {
               mFirstHeader = header;
           }
           mHeaderIndexMap.put(id, i);
           i++;
       }
        }
    }


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值