Android PreferencesActivity和自定义标题

时间:2015-12-30 16:18:21

标签: android android-fragments

我有一个标准的PreferencesActivity,用以下方式声明:

public class PreferencesActivity extends PreferenceActivity{
   ...
}

然后在活动中我按以下方式加载我的片段:

@Override
protected void onCreate(Bundle savedInstanceState) {

    super.onCreate(savedInstanceState);

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

这是我的片段:

public static class GraphicsFragment extends PreferenceFragment {

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

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

现在,这个片段完全涵盖了Activity,但我需要的是在顶部放置一个ImageView,然后在ScrollView或类似的东西中加载Fragment活动。这可能吗?

enter image description here

3 个答案:

答案 0 :(得分:1)

你可以在下面试试。 创建activity_main.xml

<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:orientation="vertical" 
    android:id="@+id/activity_main_layout">

    <ImageView
        android:id="@+id/image"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_alignParentTop="true"
        android:src="@drawable/some image" />

    <FrameLayout android:id="@+id/fragment"
        android:layout_width="match_parent" 
        android:layout_height="wrap_content" 
        android:layout_below="@id/image"/>

</RelativeLayout>

PreferencesActivity onCreate方法中使用以下内容         写

    Fragment newFragment = new GraphicsFragment();
    FragmentManager fm = getFragmentManager();
    FragmentTransaction ft = fm.beginTransaction();
    ft.replace(R.id.fragment, newFragment).commit();;

ImageView内部提供您的drawable图片。 请通过以下网址查看PreferencesActivity创建。

What to use instead of “addPreferencesFromResource” in a PreferenceActivity

How do you create Preference Activity

答案 1 :(得分:0)

是的,这是可能的。您需要将片段放在父视图中的指定视图中。

如果不需要以编程方式对片段进行充气,也可以将片段直接放入XML文件中。

答案 2 :(得分:0)

是的,你想要实现的是完全可能的。要做到这一点,可以在布局中应用imageView和frameLayout:

<LinearLayout 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"
android:id="@+id/viewGroup"
android:orientation="vertical"
tools:context="com.android.empty.MainActivity">

<ImageView
    android:layout_width="match_parent"
    android:layout_height="140dp"
    android:background="@drawable/c1"
    android:scaleType="centerCrop"/>

<FrameLayout
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:id="@+id/frame"></FrameLayout>

</LinearLayout>

现在更改,将replace方法内部的id从android.R.id.content更改为R.id.frame将会起到作用。

getFragmentManager().beginTransaction()
            .replace(R.id.frame, new GraphicsFragment())
            .commit();

    //Do what ever you want to with imageview.

实际上,android.R.id.content给出了根视图,因此片段完全覆盖了布局。