我有一个首选项片段(SettingsFragment),并且有一个使用该片段的活动(SettingsActivity)。
我不知道为什么片段中的首选项列表无法滚动。我知道PreferenceFragmentCompat默认使用他的RecyclerView。
这是我的代码。
SettingsFragment.java
public class SettingsFragment extends PreferenceFragmentCompat {
@Override
public void onCreatePreferences(Bundle savedInstanceState, String rootKey) {
setPreferencesFromResource(R.xml.preferences, rootKey);
}
}
preferences.xml
<androidx.preference.PreferenceScreen
...>
<androidx.preference.EditTextPreference
android:inputType="number"
android:title="Event"
android:key="event"/>
<!-- Other Preferences... -->
</androidx.preference.PreferenceScreen>
SettingsActivity.java
public class SettingsActivity extends AppCompatActivity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_settings);
if(savedInstanceState == null) {
Fragment preferenceFragment = new SettingsFragment();
FragmentTransaction ft = getSupportFragmentManager().beginTransaction();
ft.add(R.id.fragment_container, preferenceFragment);
ft.commit();
}
}
}
activity_settings.xml
<androidx.constraintlayout.widget.ConstraintLayout
...
tools:context=".SettingsActivity">
<FrameLayout
android:id="@+id/fragment_container"
...>
</FrameLayout>
</androidx.constraintlayout.widget.ConstraintLayout>
对于每个有相同问题的人。
将线性布局用于activity_settings.xml而不是ConstraintLayout使一切正常。现在,RecyclerView可以垂直滚动。