PreferenceScreen 总是在顶部显示额外的 space
PreferenceScreen always shows with additional space to top
目前,我遇到了有关偏好片段显示的问题。我正在使用底部导航菜单,我想显示一个工具栏(以前是操作栏),显示导航栏中当前选定的菜单项。
问题是在想要的工具栏和首选项片段顶部之间似乎还有第二个不可见的工具栏,如图所示。
首选项屏幕顶部:
<PreferenceScreen
xmlns:android="http://schemas.android.com/apk/res/android">
<PreferenceCategory android:title="@string/preferences_category_online_area">
<EditTextPreference
android:key="preference_username"
android:inputType="text"
android:persistent="true"
android:selectAllOnFocus="true"
android:singleLine="true"
android:summary="@string/edit_text_preferences_username_summary"
android:title="@string/edit_text_preferences_username_text" />
<EditTextPreference
android:key="preference_password"
android:inputType="textPassword"
android:persistent="true"
android:selectAllOnFocus="true"
android:singleLine="true"
android:summary="@string/edit_text_preferences_passwort_summary"
android:title="@string/edit_text_preferences_passwort_text" />
...
mobile_navigation.xml
:
<?xml version="1.0" encoding="utf-8"?>
<navigation xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
xmlns:tools="http://schemas.android.com/tools"
android:id="@+id/mobile_navigation"
app:startDestination="@+id/navigation_library">
<fragment
android:id="@+id/navigation_dummy"
android:name="de.example.OnlineSelectionFragment"
android:label="@string/title_dummy"
tools:layout="@layout/fragment_dummy" />
<fragment
android:id="@+id/navigation_preferences"
android:name="de.example.PrefsFragment"
android:label="@string/title_preferences" />
</navigation>
Class PrefsFragment.kt
其中片段填充了首选项
package de.example
import android.os.Bundle
import androidx.preference.PreferenceFragmentCompat
class PrefsFragment : PreferenceFragmentCompat() {
override fun onCreatePreferences(savedInstanceState: Bundle?, rootKey: String?) {
setPreferencesFromResource(R.xml.preferences, null)
}
}
如何删除空的顶部space?以前,PrefsFragment
已显示在额外的 activity 中,但没有它我无法将其格式化为 XML。
非常感谢!
编辑 1
根据要求主 activity xml 文件:
<androidx.constraintlayout.widget.ConstraintLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
android:id="@+id/container"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:paddingTop="?attr/actionBarSize">
<com.google.android.material.bottomnavigation.BottomNavigationView
android:id="@+id/nav_view"
android:layout_width="0dp"
android:layout_height="wrap_content"
android:layout_marginStart="0dp"
android:layout_marginEnd="0dp"
android:background="?android:attr/windowBackground"
app:layout_constraintBottom_toBottomOf="parent"
app:layout_constraintLeft_toLeftOf="parent"
app:layout_constraintRight_toRightOf="parent"
app:menu="@menu/bottom_nav_menu" />
<fragment
android:id="@+id/nav_host_fragment_activity_main"
android:name="androidx.navigation.fragment.NavHostFragment"
android:layout_width="match_parent"
android:layout_height="match_parent"
app:defaultNavHost="true"
app:layout_constraintBottom_toTopOf="@id/nav_view"
app:layout_constraintLeft_toLeftOf="parent"
app:layout_constraintRight_toRightOf="parent"
app:layout_constraintTop_toTopOf="parent"
app:navGraph="@navigation/mobile_navigation" />
</androidx.constraintlayout.widget.ConstraintLayout>
问题已解决。
该行为的原因是 activity xml 主文件中的 android:paddingTop="?attr/actionBarSize"
。
目前,我遇到了有关偏好片段显示的问题。我正在使用底部导航菜单,我想显示一个工具栏(以前是操作栏),显示导航栏中当前选定的菜单项。
问题是在想要的工具栏和首选项片段顶部之间似乎还有第二个不可见的工具栏,如图所示。
首选项屏幕顶部:
<PreferenceScreen
xmlns:android="http://schemas.android.com/apk/res/android">
<PreferenceCategory android:title="@string/preferences_category_online_area">
<EditTextPreference
android:key="preference_username"
android:inputType="text"
android:persistent="true"
android:selectAllOnFocus="true"
android:singleLine="true"
android:summary="@string/edit_text_preferences_username_summary"
android:title="@string/edit_text_preferences_username_text" />
<EditTextPreference
android:key="preference_password"
android:inputType="textPassword"
android:persistent="true"
android:selectAllOnFocus="true"
android:singleLine="true"
android:summary="@string/edit_text_preferences_passwort_summary"
android:title="@string/edit_text_preferences_passwort_text" />
...
mobile_navigation.xml
:
<?xml version="1.0" encoding="utf-8"?>
<navigation xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
xmlns:tools="http://schemas.android.com/tools"
android:id="@+id/mobile_navigation"
app:startDestination="@+id/navigation_library">
<fragment
android:id="@+id/navigation_dummy"
android:name="de.example.OnlineSelectionFragment"
android:label="@string/title_dummy"
tools:layout="@layout/fragment_dummy" />
<fragment
android:id="@+id/navigation_preferences"
android:name="de.example.PrefsFragment"
android:label="@string/title_preferences" />
</navigation>
Class PrefsFragment.kt
其中片段填充了首选项
package de.example
import android.os.Bundle
import androidx.preference.PreferenceFragmentCompat
class PrefsFragment : PreferenceFragmentCompat() {
override fun onCreatePreferences(savedInstanceState: Bundle?, rootKey: String?) {
setPreferencesFromResource(R.xml.preferences, null)
}
}
如何删除空的顶部space?以前,PrefsFragment
已显示在额外的 activity 中,但没有它我无法将其格式化为 XML。
非常感谢!
编辑 1 根据要求主 activity xml 文件:
<androidx.constraintlayout.widget.ConstraintLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
android:id="@+id/container"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:paddingTop="?attr/actionBarSize">
<com.google.android.material.bottomnavigation.BottomNavigationView
android:id="@+id/nav_view"
android:layout_width="0dp"
android:layout_height="wrap_content"
android:layout_marginStart="0dp"
android:layout_marginEnd="0dp"
android:background="?android:attr/windowBackground"
app:layout_constraintBottom_toBottomOf="parent"
app:layout_constraintLeft_toLeftOf="parent"
app:layout_constraintRight_toRightOf="parent"
app:menu="@menu/bottom_nav_menu" />
<fragment
android:id="@+id/nav_host_fragment_activity_main"
android:name="androidx.navigation.fragment.NavHostFragment"
android:layout_width="match_parent"
android:layout_height="match_parent"
app:defaultNavHost="true"
app:layout_constraintBottom_toTopOf="@id/nav_view"
app:layout_constraintLeft_toLeftOf="parent"
app:layout_constraintRight_toRightOf="parent"
app:layout_constraintTop_toTopOf="parent"
app:navGraph="@navigation/mobile_navigation" />
</androidx.constraintlayout.widget.ConstraintLayout>
问题已解决。
该行为的原因是 activity xml 主文件中的 android:paddingTop="?attr/actionBarSize"
。