我有从 XML、preferenceFragment 和左侧导航创建的首选项。当我选择“设置”时,我的首选片段出来了......我可以使用 DPad 上下移动,当底部没有更多选择时,光标停止(期望的行为),但是当我向上移动列表时,光标继续移动到左侧导航。我希望它停在顶部。下面是我的 pref_screen xml。我的左手导航是在代码端创建的。我不知道如何将 DPad 逻辑用于此。如果在设置片段中,我还想限制 DPad 将光标移动到左侧导航菜单。
<?xml version="1.0" encoding="utf-8"?>
<PreferenceScreen
xmlns:android="http://schemas.android.com/apk/res/android"
android:key="main_pref">
<PreferenceCategory
android:title="@string/units">
<ListPreference
android:key="pref_unit_temp"
android:title="@string/temperature"
android:defaultValue="@string/default_metric"
android:entries="@array/pref_temp_units"
android:entryValues="@array/pref_temp_units_values"
android:dialogTitle="@string/units"
android:layout="@layout/settings_item" />
</PreferenceCategory>
<PreferenceCategory
android:title="@string/advanced">
<ListPreference
android:key="pref_speed"
android:title="@string/speed"
android:entries="@array/pref_speed"
android:entryValues="@array/pref_speed_values"
android:defaultValue="@string/default_metric"
android:layout="@layout/settings_item"/>
<ListPreference
android:key="pref_measurement"
android:title="@string/measurement"
android:entries="@array/pref_measurement"
android:entryValues="@array/pref_measurement_values"
android:defaultValue="@string/default_metric"
android:layout="@layout/settings_item"/>
<ListPreference
android:key="pref_time"
android:title="@string/time_format"
android:entries="@array/pref_time"
android:entryValues="@array/pref_time_values"
android:defaultValue="@string/default_metric"
android:layout="@layout/settings_item"/>
<ListPreference
android:key="pref_date"
android:title="@string/date_format"
android:entries="@array/pref_date"
android:entryValues="@array/pref_date_values"
android:defaultValue="@string/default_metric"
android:layout="@layout/settings_item"/>
</PreferenceCategory><!--
<PreferenceCategory
android:title="Weather Notification Bar">
<CheckBoxPreference
android:key="pref_notification_enable"
android:title="Enable Notifications"
android:summary="Turn on/off status bar weather notifications"
android:defaultValue="true"
android:enabled="false"/>
<ListPreference
android:key="pref_notification_update_method"
android:dependency="pref_notification_enable"
android:title="Choose notification update method"
android:summary="Manual, Automatic, Interval"
android:entries="@array/pref_notification_update_method"
android:entryValues="@array/pref_notification_update_method_values"
android:dialogTitle="Update Method" />
<ListPreference
android:key="pref_notification_interval"
android:title="Interval to update"
android:dependency="pref_notification_enable"
android:summary="Use this to set the update interval if interval method is selected"
android:entries="@array/pref_notification_interval"
android:entryValues="@array/pref_notification_interval_values"
android:dialogTitle="Update Interval" />
</PreferenceCategory>
-->
<!--<PreferenceCategory
android:title="Background">
<CheckBoxPreference
android:key="background_enabled"
android:title="Enable Interactive Background"
android:summary="Turn off to improve performance"
android:defaultValue="true"
android:enabled="true"/>
</PreferenceCategory>
--><PreferenceCategory
android:title="AccuWeather">
<!-- <PreferenceScreen
android:title="@string/call_us"
android:summary=""
android:layout="@layout/settings_item">
<intent android:action="android.intent.action.DIAL"
android:data="tel:8142358650" />
</PreferenceScreen>
<PreferenceScreen
android:title="@string/email_us"
android:summary="customerservice@accuweather.com"
android:layout="@layout/settings_item">
<intent android:action="com.accuweather.android.tablet.EMAIL_ACCUWX"
/>
<intent android:action="android.intent.action.SENDTO"
android:data="customerservice@accuweather.com"/>
</PreferenceScreen> -->
<PreferenceScreen
android:title="@string/terms_conditions"
android:summary=""
android:layout="@layout/settings_item">
<intent android:action="android.intent.action.VIEW"
android:data="http://www.accuweather.com/m/EULA.aspx" />
</PreferenceScreen>
</PreferenceCategory>
</PreferenceScreen>
这是一个屏幕截图: