在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. } }
相关推荐
这种方法不再直接通过Preference的`android:layout`属性,而是先在Activity中加载自定义布局,然后再将这个布局插入到PreferenceActivity中。XML配置文件中的Preference保持不变,但在Activity的`onCreate()`方法中...
- 可以通过创建主题样式或者在`style.xml`中定义`<style>`,然后在`Preference`的XML定义中使用`android:layout="@layout/custom_preference"`和`android:theme="@style/CustomPreferenceTheme"`来应用自定义样式。...
总结,`Preference`类在Android开发中扮演了至关重要的角色,它简化了设置界面的创建和管理,同时也提供了对用户设置数据的存储和恢复。通过理解`Preference`的用法和与其相关的组件,开发者能够高效地构建出用户...
在这些类中,我们可以通过`addPreferencesFromResource(R.xml.preferences)`方法加载之前在`res/xml/preferences.xml`中定义的Preference布局。然后,我们可以通过监听Preference的改变事件来执行相应的操作: ```...
2. **创建`Fragment`**:创建一个继承自`PreferenceFragmentCompat`的`Fragment`,在这个`Fragment`中,我们需要重写`onCreatePreferences()`方法,加载刚才创建的`Preference` XML布局。 ```java public class ...
在Android应用开发中,Preference是实现用户界面(UI)中设置和首选项管理的重要组件。本项目"Android应用源码之Preference_Demo"是一个毕业设计示例,它深入展示了如何在Android应用程序中创建和管理用户偏好设置。...
- 在运行时,可以通过`PreferenceManager`的`addPreferencesFromIntent()`或`addPreferencesFromResource()`方法动态加载或更新偏好设置。 6. **PreferenceFragment和PreferenceFragmentCompat** - **...
1. 添加到XML布局:在res/xml目录下创建一个xml文件,例如preference.xml,然后在其中声明各种Preference。例如: ```xml android:key="checkbox_key" android:title="开关标题" android:summary="开关描述" ...
2. **添加Preference XML文件**:在项目资源目录下的`res/xml`目录中,添加一个新的Preference XML文件,而不是Layout XML。 3. **编辑Preference XML**:使用可视化编辑器或直接编辑XML源码,定义偏好设置的结构和...
通过在XML中定义`<PreferenceScreen>`标签,我们可以添加各种类型的偏好设置,如开关按钮(`SwitchPreference`)、单选按钮(`ListPreference`)和输入框(`EditTextPreference`)等。 例如,一个简单的`...
3. 在应用中,我们需要监听Preference的改变,这通常通过重写`OnPreferenceChangeListener`接口或者在Preference上添加`onPreferenceChangeListener`实现。当用户更改设置时,回调会被触发,这时我们可以读取新的值...
接下来,为了在Activity中加载这个设置界面,我们需要在Activity中添加以下代码: ```java public class SettingsActivity extends AppCompatActivity implements PreferenceFragmentCompat....
创建一个XML文件(例如`settings.xml`),在res/layout目录下,定义你的偏好设置。以下是一个简单的例子: ```xml android:key="switch_preference" android:title="开关选项" android:summary="开启或关闭此...
3. 在Activity中加载preference.xml文件,通常是在onCreate()方法中调用setContentView()的替代方法,即addPreferencesFromResource(R.xml.preference)。这将把XML中的设置项添加到Activity中并显示出来。 例如,...
与普通Fragment类似,通过`<fragment>`标签在Activity的布局文件中添加`SettingsFragment`,或者在运行时动态添加。 通过以上步骤,你就可以在Android应用中创建并使用Fragment以及PreferenceFragment了。它们提供...
在`AlertDialog.Builder`中,我们可以通过`setView()`方法加载自定义布局,该布局中包含了一个ListView。如果是使用`DialogFragment`,则需要在`onCreateDialog()`方法内构建Dialog并设置视图。 ```java // 使用...
在`PreferenceActivity`中,我们需要通过覆盖`onCreate()`方法,并调用`addPreferencesFromResource(int)`来加载这个XML文件。例如: ```java public class SettingsActivity extends PreferenceActivity { @...
- 使用Eclipse或其他IDE提供的工具,选择“Preference”而不是“Layout”来创建一个新的XML文件。 - 文件应保存在`res/xml/`目录下。 - 在这个文件中,可以使用多种类型的Preference组件来构建设置界面。 #### 四、...
2. **添加XML文件**:在项目的资源目录`res`下新建一个XML文件夹(通常命名为`xml`),并在其中添加一个新的XML文件。这里需要选择的是Preference XML文件,而不是常规的Layout XML文件。 3. **编辑Preference XML**...