H. Saul H. Saul - 2 months ago 17
Android Question

PreferenceFragment overlaps toolbar

As the title, my PreferenceFragment overlaps my toolbar. I've already tryed different solutions but the problem persists. Hopes in any help. Here is my code.

Activity:

import android.os.Bundle;
import android.support.v7.app.AppCompatActivity;
import android.support.v7.widget.Toolbar;

public class MyActivity extends AppCompatActivity {

@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_settings);

Toolbar toolbar = (Toolbar) findViewById(R.id.app_bar);
setSupportActionBar(toolbar);

// Display the fragment as the main content
getFragmentManager().beginTransaction().replace(android.R.id.content, new SettingsFragment()).commit();
}
}


Activity XML (activity_settings.xml):

<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
tools:context="com.mypackage.MyActivity">

<include
layout="@layout/app_bar" />

<FrameLayout
android:id="@+id/pref_content"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:layout_below="@id/app_bar"/>

</RelativeLayout>


Fragment (SettingsFragment.java):

import android.preference.PreferenceFragment;
import android.os.Bundle;

public class SettingsFragment extends PreferenceFragment {

@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);

// Load the preferences from an XML resource
addPreferencesFromResource(R.xml.pref_settings);
}

}


Fragment XML (pref_settings.xml):

<?xml version="1.0" encoding="utf-8"?>

<PreferenceScreen
xmlns:android="http://schemas.android.com/apk/res/android">

<CheckBoxPreference
android:key="pref_checkbox"
android:title="Title"
android:summary="Summary"
android:defaultValue="false"/>

</PreferenceScreen>


Toolbar (app_bar.xml):

<?xml version="1.0" encoding="utf-8"?>

<android.support.v7.widget.Toolbar xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:id="@+id/app_bar"
android:background="@color/primaryColor"
android:elevation="3dp"
app:theme="@style/ThemeOverlay.AppCompat.Dark" />

Answer

change this:

    getFragmentManager().beginTransaction().replace(android.R.id.content, new SettingsFragment()).commit();

to:

    getFragmentManager().beginTransaction().replace(R.id.pref_content, new SettingsFragment()).commit();
Comments