Android Fragment未在一台设备上展示

时间:2017-06-10 07:10:23

标签: android-layout android-fragments

我的一个活动有3个片段,它们应该从上到下依次排列。完全适用于我的索尼Xperia Z3C(Android 6.0.1)手机,但在我的三星J1 mini(Android 5.1.1)上。完全没有显示第3个/底部片段。

有一个空的空间可以去,我知道空的空间是空的 - 我在片段2和3上设置了背景,并且2更改了但是它下面仍然有一个空的空间。

我调整了代码并将片段2的第二个副本放入其中并且有效,因此我假设它在片段本身中存在问题。

我知道Fragment已经创建了(它调用了onCreateView,而Activity可以使用FragmentManager找到它),但它只是不会出现在我的一部手机上。

任何提示都非常感谢。

这是片段(名称已更改,但没有其他内容......)

<FrameLayout 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.example.FragC">

    <GridLayout
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:columnCount="4"
        tools:background="@android:drawable/screen_background_dark">

        <Button
            android:id="@+id/btnX"
            android:layout_width="0dp"
            android:layout_height="wrap_content"
            android:layout_column="0"
            android:layout_columnWeight="1"
            android:layout_row="0"
            android:onClick="scoreButtonClicked"
            android:text="@string/xLab" />

        <!-- more buttons just the text, column and row changes -->


    </GridLayout>

</FrameLayout>

这就是活动

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:tools="http://schemas.android.com/tools"
    android:id="@+id/activityLL"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:orientation="vertical"
    tools:context="com.example.Activity1">

    <fragment
        android:id="@+id/fragA"
        android:name="com.example.FragA"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        tools:layout="@layout/fragment_frag_a" />

    <fragment
        android:id="@+id/fragB"
        android:name="com.example.FragB"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        tools:layout="@layout/fragment_fragb" />

    <fragment
        android:id="@+id/fragC"
        android:name="com.example.FragC"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        tools:layout="@layout/fragmen_fragc" />

</LinearLayout>

我记得我有这个活动的横向版本。它的顶层是水平线性布局。左列是包含片段1和2的垂直线性布局,然后片段3(也称为不可见片段)应该出现在右侧。它没有。空间就在那里,但没有碎片。

更新我从片段中取出所有按钮并用TextView(通过GUI的所有默认值)替换它们并显示出来。按钮中的某些东西会让三星感到困惑......

我将按钮宽度从0dp更改为wrap_content,现在我看到第一列按钮。我可以看到第二和第三列,但如果我尝试添加第四列,我所能看到的就是第一列。布局真的很奇怪......

1 个答案:

答案 0 :(得分:2)

好的,所以我得到了答案:扔掉GridLayout并使用嵌套的LinearLayouts代替。

正如我所说的原始代码在1台设备上工作但不是另一台设备。

改变宽度有帮助。设置一个固定的宽度让我得到所有按钮,但是在添加最后一个按钮时使用wrap_content,只剩下按钮1。

我无法弄清楚问题是什么,我找到的大多数答案都说使用了嵌套的LinearLayouts。我做了,他们工作了!。