`
Leif_冬
  • 浏览: 47294 次
  • 性别: Icon_minigender_1
  • 来自: 苏州
社区版块
存档分类
最新评论

在Preference裏動態加載layout

阅读更多

在string.xml裏:

 

<com.android.deskclock.settings.AlarmVolumePreference
            android:key="volume_setting"
            android:layout="@layout/alarm_volume_preference"
            android:title="@string/alarm_volume_title" />

 自定義了Prefernce,加載的默認layout爲alarm_volume_preference.xml

 

 

但是因爲需要適應其它平臺[因爲特殊設備的分辨率的原因],需要在AlarmVolumePreference裏根據不同情況加載layout.

 

查詢/frameworks/base/core/java/android/preference/Preference.java

    /**
     * Sets the layout resource that is inflated as the {@link View} to be shown
     * for this Preference. In most cases, the default layout is sufficient for
     * custom Preference objects and only the widget layout needs to be changed.
     * <p>
     * This layout should contain a {@link ViewGroup} with ID
     * {@link android.R.id#widget_frame} to be the parent of the specific widget
     * for this Preference. It should similarly contain
     * {@link android.R.id#title} and {@link android.R.id#summary}.
     *
     * @param layoutResId The layout resource ID to be inflated and returned as
     *            a {@link View}.
     * @see #setWidgetLayoutResource(int)
     */
    public void setLayoutResource(@LayoutRes int layoutResId) {
        if (layoutResId != mLayoutResId) {
            // Layout changed
            mRecycleEnabled = false;
        }

        mLayoutResId = layoutResId;
    }

 將新增的layout放置到overlay裏,然後在AlarmVolumePreference的構造方法裏調用setLayoutResource:

public AlarmVolumePreference(Context context, AttributeSet attrs) {
        super(context, attrs);
        if(滿足xx條件) {
            setLayoutResource(R.layout.alarm_volume_preference_xx); //不滿足該條件則加載默認layout.
        }
    }

 

 

分享到:
评论

相关推荐

    Android布局——Preference自定义layout的方法

    这种方法不再直接通过Preference的`android:layout`属性,而是先在Activity中加载自定义布局,然后再将这个布局插入到PreferenceActivity中。XML配置文件中的Preference保持不变,但在Activity的`onCreate()`方法中...

    自定义Preference

    - 可以通过创建主题样式或者在`style.xml`中定义`&lt;style&gt;`,然后在`Preference`的XML定义中使用`android:layout="@layout/custom_preference"`和`android:theme="@style/CustomPreferenceTheme"`来应用自定义样式。...

    preference 用法之Settings

    总结,`Preference`类在Android开发中扮演了至关重要的角色,它简化了设置界面的创建和管理,同时也提供了对用户设置数据的存储和恢复。通过理解`Preference`的用法和与其相关的组件,开发者能够高效地构建出用户...

    Android Preference解读

    在这些类中,我们可以通过`addPreferencesFromResource(R.xml.preferences)`方法加载之前在`res/xml/preferences.xml`中定义的Preference布局。然后,我们可以通过监听Preference的改变事件来执行相应的操作: ```...

    ViewPager实现滑动的Preference页面且带ActionBar

    2. **创建`Fragment`**:创建一个继承自`PreferenceFragmentCompat`的`Fragment`,在这个`Fragment`中,我们需要重写`onCreatePreferences()`方法,加载刚才创建的`Preference` XML布局。 ```java public class ...

    Android应用源码之Preference_Demo-IT计算机-毕业设计.zip

    在Android应用开发中,Preference是实现用户界面(UI)中设置和首选项管理的重要组件。本项目"Android应用源码之Preference_Demo"是一个毕业设计示例,它深入展示了如何在Android应用程序中创建和管理用户偏好设置。...

    安卓开发-Preference_Demo.zip

    - 在运行时,可以通过`PreferenceManager`的`addPreferencesFromIntent()`或`addPreferencesFromResource()`方法动态加载或更新偏好设置。 6. **PreferenceFragment和PreferenceFragmentCompat** - **...

    Preference的使用

    1. 添加到XML布局:在res/xml目录下创建一个xml文件,例如preference.xml,然后在其中声明各种Preference。例如: ```xml android:key="checkbox_key" android:title="开关标题" android:summary="开关描述" ...

    android中PreferenceActivity详解

    2. **添加Preference XML文件**:在项目资源目录下的`res/xml`目录中,添加一个新的Preference XML文件,而不是Layout XML。 3. **编辑Preference XML**:使用可视化编辑器或直接编辑XML源码,定义偏好设置的结构和...

    android 设置界面 PreferenceScreen

    通过在XML中定义`&lt;PreferenceScreen&gt;`标签,我们可以添加各种类型的偏好设置,如开关按钮(`SwitchPreference`)、单选按钮(`ListPreference`)和输入框(`EditTextPreference`)等。 例如,一个简单的`...

    TestofPrefrence.rar

    3. 在应用中,我们需要监听Preference的改变,这通常通过重写`OnPreferenceChangeListener`接口或者在Preference上添加`onPreferenceChangeListener`实现。当用户更改设置时,回调会被触发,这时我们可以读取新的值...

    安卓PreferenceScreen使用详细Demo

    接下来,为了在Activity中加载这个设置界面,我们需要在Activity中添加以下代码: ```java public class SettingsActivity extends AppCompatActivity implements PreferenceFragmentCompat....

    PreferenceFragment使用方法

    创建一个XML文件(例如`settings.xml`),在res/layout目录下,定义你的偏好设置。以下是一个简单的例子: ```xml android:key="switch_preference" android:title="开关选项" android:summary="开启或关闭此...

    Android之PreferenceActivity.doc

    3. 在Activity中加载preference.xml文件,通常是在onCreate()方法中调用setContentView()的替代方法,即addPreferencesFromResource(R.xml.preference)。这将把XML中的设置项添加到Activity中并显示出来。 例如,...

    Android中Fragment子类及其PreferenceFragment的创建过程演示

    与普通Fragment类似,通过`&lt;fragment&gt;`标签在Activity的布局文件中添加`SettingsFragment`,或者在运行时动态添加。 通过以上步骤,你就可以在Android应用中创建并使用Fragment以及PreferenceFragment了。它们提供...

    自定义Dialog里listview的单选、多选

    在`AlertDialog.Builder`中,我们可以通过`setView()`方法加载自定义布局,该布局中包含了一个ListView。如果是使用`DialogFragment`,则需要在`onCreateDialog()`方法内构建Dialog并设置视图。 ```java // 使用...

    Android 属性页PreferenceActivity的实现

    在`PreferenceActivity`中,我们需要通过覆盖`onCreate()`方法,并调用`addPreferencesFromResource(int)`来加载这个XML文件。例如: ```java public class SettingsActivity extends PreferenceActivity { @...

    Android之PreferenceActivity简介

    - 使用Eclipse或其他IDE提供的工具,选择“Preference”而不是“Layout”来创建一个新的XML文件。 - 文件应保存在`res/xml/`目录下。 - 在这个文件中,可以使用多种类型的Preference组件来构建设置界面。 #### 四、...

    Android至PreferenceActivity

    2. **添加XML文件**:在项目的资源目录`res`下新建一个XML文件夹(通常命名为`xml`),并在其中添加一个新的XML文件。这里需要选择的是Preference XML文件,而不是常规的Layout XML文件。 3. **编辑Preference XML**...

Global site tag (gtag.js) - Google Analytics