我有一个标准的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活动。这可能吗?
答案 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
答案 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给出了根视图,因此片段完全覆盖了布局。