我的一个活动有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,现在我看到第一列按钮。我可以看到第二和第三列,但如果我尝试添加第四列,我所能看到的就是第一列。布局真的很奇怪......
答案 0 :(得分:2)
好的,所以我得到了答案:扔掉GridLayout并使用嵌套的LinearLayouts代替。
正如我所说的原始代码在1台设备上工作但不是另一台设备。
改变宽度有帮助。设置一个固定的宽度让我得到所有按钮,但是在添加最后一个按钮时使用wrap_content,只剩下按钮1。
我无法弄清楚问题是什么,我找到的大多数答案都说使用了嵌套的LinearLayouts。我做了,他们工作了!。