片段占用的空间超出了内容所需的空间

时间:2017-02-27 13:41:57

标签: android android-layout android-fragments

当我在布局文件中声明PreferenceFragment时,就像这样

<LinearLayout
        android:id="@+id/webViewLayout"

        android:layout_width="match_parent"
        android:layout_height="match_parent"

        android:orientation="horizontal">

        <fragment
            android:id="@+id/toggleView"

            android:layout_width="match_parent"
            android:layout_height="wrap_content"

            android:name="path_to_fragment.ToggleView_PrefFragment" />

        <WebView
            android:id="@+id/webView"

            android:layout_width="0dp"
            android:layout_height="wrap_content"
            android:layout_weight="1" />

</LinearLayout>

only the PreferenceFragment appears on the screen并且WebView的高度等于零(因为片段占用了所有空间)。

但为什么呢?我将片段的高度声明为&#34; wrap_content&#34;,所以它应该只占用它所需的空间......

感谢任何帮助:)

修改

ToggleView_PrefFragment:

package fragment;

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

import R;

public final class ToggleView_PrefFragment extends PreferenceFragment {

    @Override
    public void onCreate(Bundle savedInstanceState) {

        super.onCreate(savedInstanceState);

        addPreferencesFromResource(R.xml.toggle_view);

    }
}

toggle_view.xml:

<?xml version="1.0" encoding="utf-8"?>
<PreferenceScreen xmlns:android="http://schemas.android.com/apk/res/android">

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

</PreferenceScreen>

1 个答案:

答案 0 :(得分:0)

您的WebView无法显示,因为您的根布局是水平 LinearLayout。 您的PreferenceFragment宽度为match_parent,因此WebView没有空间。 此外,您使WebView使用重量匹配所有可用空间。

我假设您希望PreferenceFragment位于wrap_content高度的顶部。 PreferenceFragment下面的WebView与所有剩余的垂直空间相匹配。

在这种情况下,您应该执行以下操作:

<LinearLayout
        android:id="@+id/webViewLayout"

        android:layout_width="match_parent"
        android:layout_height="match_parent"

        android:orientation="vertical">

        <fragment
            android:id="@+id/toggleView"

            android:layout_width="match_parent"
            android:layout_height="wrap_content"

            android:name="path_to_fragment.ToggleView_PrefFragment" />

        <WebView
            android:id="@+id/webView"

            android:layout_width="match_parent"
            android:layout_height="0dp"
            android:layout_weight="1" />

</LinearLayout>

LinearLayout方向更改为垂直。 对于WebView开关的宽度和高度选项。并将宽度更改为match_parent。

希望有所帮助