1

我已经在 stackoverflow 上待了一个星期,现在试图找到这个“重叠”问题的答案。

有些人甚至不使用 setContentView()??? 其他人坚持...

我错过了一些东西。

单击设置菜单之前和之后的快照

设置活动

public class SettingsActivity extends Activity {

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

        setContentView(R.layout.preferences);

         getFragmentManager().beginTransaction().replace(R.id.pref_frag_id, new appPreferences()).commit();

    }


    public static class appPreferences extends PreferenceFragment {


        @Override
        public void onCreate(Bundle savedInstanceState) {

            super.onCreate(savedInstanceState);

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

PreferenceFragment 的布局,preferences.xml

<?xml version="1.0" encoding="utf-8"?>
<FrameLayout xmlns:android="http://schemas.android.com/apk/res/android"
             xmlns:tools="http://schemas.android.com/tools"
             android:layout_width="fill_parent"
             android:layout_height="fill_parent"
             android:orientation="vertical"
             tools:context="${relativePackage}.${activityClass}"
             >

    <fragment
            android:layout_width="fill_parent"
            android:layout_height="fill_parent"
            android:id="@+id/pref_frag_id"
            android:name ="com.testng.firstapp.SettingsActivity$appPreferences"
            />

</FrameLayout>

'main' 布局Main.xml,以防我遗漏一些东西:

<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"
    android:paddingBottom="@dimen/activity_vertical_margin"
    android:paddingLeft="@dimen/activity_horizontal_margin"
    android:paddingRight="@dimen/activity_horizontal_margin"
    android:paddingTop="@dimen/activity_vertical_margin"
    tools:context="${relativePackage}.${activityClass}" >

    <ListView
            android:id="@+id/lvToDos"
            android:layout_width="206dp"
            android:layout_height="380dp"
            android:layout_alignParentEnd="true"
            android:layout_alignParentStart="true"
            android:smoothScrollbar="false"
            android:layout_above="@+id/itemEntryView"
            android:layout_alignParentTop="true">
    </ListView>

    <LinearLayout
        android:id="@+id/itemEntryView"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:orientation="horizontal"
        android:layout_alignParentBottom="true"
        android:layout_alignParentStart="true" >

       <Button
            android:id="@+id/btnNewToDo"
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:onClick="editToDoItem"
            android:text="@string/new_item"
            android:textSize="@dimen/smallTextSize" />
    </LinearLayout>
</RelativeLayout>
4

2 回答 2

0

我认为你最好使用 2 个片段,一个用于初始视图,一个用于设置视图。在主要活动 XML 中,应该只有一个 FrameLayout。这是您放置主要片段和设置片段的地方。通过在您的主视图中只有 1 个 FrameLayout 并在这 2 个片段之间进行交换,您可以保证一次只有 1 个可见。但是,我建议您使用单独的活动来托管您的设置片段,因为我不确定这两个视图是否相互关联。

于 2015-03-14T19:02:42.953 回答
0

哎呀。

我的活动 manifest.xml 文件的主题有误:

<style name="Theme.Holo.Light.Panel">

Theme.Holo.Light.Panel 使窗口浮动,具有透明背景。

于 2015-03-17T22:22:34.137 回答