我会尝试简化问题以避免长代码片段:我想在我的布局中做类似的事情
结构应该很容易,例如:
LinearLayoutA (vertical)
LinearLayoutB (vertical)
LinearLayoutC (horizontal)
LinearLayoutC' (horizontal)
LinearLayoutB' (vertical)
LinearLayoutC'' (horizontal)
LinearLayoutC''' (horizontal)
All with weight=1
我的问题是定义在LinearLayoutC中放置什么。所以现在关注LinearLayoutC中的元素:
我的第一个选择是另一个LinearLayout(垂直),问题是如果图像比LinearLayoutC高,则TextView不可见。
所以我使用了RelativeLayout:
<RelativeLayout
android:id="@+id/RelativeLayout"
xmlns:android="http://schemas.android.com/apk/res/android"
android:orientation="vertical"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
>
<TextView
android:layout_height="wrap_content"
android:layout_width="wrap_content"
android:text="Eiffel"
android:textSize="45sp"
android:id="@+id/text"
android:layout_alignParentBottom="true"
android:layout_centerHorizontal="true"
android:gravity="center"
></TextView>
<ImageView
android:layout_height="wrap_content"
android:layout_width="wrap_content"
android:src="@drawable/eiffel2"
android:id="@+id/image"
android:layout_above="@id/text"
android:layout_centerHorizontal="true"></ImageView>
</RelativeLayout>
很好用!但不是很长=(。(我们将从现在起调用RelativeLayout1)当屏幕小于视图时,布局看起来很完美但是当进入更大的屏幕时,块与父母的底部对齐,我想要它以屏幕(或子布局)为中心。就像显示屏幕一样:
这是因为TextView上的android:layout_alignParentBottom =“true”。
试图解决我使用RelativeLayout2来包装RelativeLayout1的代码如下:
<RelativeLayout2
android:layout_width="fill_parent"
android:layout_height="fill_parent"
>
<RelativeLayout1
android:layout_centerInParent="true"
.....
></RelativeLayout1>
</RelativeLayout2>
但即便如此,布局RelativeLayout1仍然与图像的底部对齐(并且因为它具有height = fill_parent而垂直填满所有屏幕,我不明白为什么会发生这种情况,我该如何解决它。请你可以帮助我吗?我已经试了好几个小时了。提前谢谢
答案 0 :(得分:2)
添加
ImageView中的android:adjustViewBounds="true"
答案 1 :(得分:1)
从textview中移除android:layout_alignParentBottom="true"
并将其添加到您的root relativelayout标记android:layout_centerInParent="true"
答案 2 :(得分:0)
我调试了你的代码..试试这个:
<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout
android:id="@+id/RelativeLayout"
xmlns:android="http://schemas.android.com/apk/res/android"
android:orientation="vertical"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:gravity = "center_vertical" >
<ImageView
android:layout_height="wrap_content"
android:layout_width="wrap_content"
android:src="@drawable/eiffel2"
android:id="@+id/image"
android:layout_centerHorizontal = "true"
/>
<TextView
android:layout_height="wrap_content"
android:layout_width="wrap_content"
android:text="Eiffel"
android:textSize="45sp"
android:id="@+id/text"
android:layout_below = "@+id/image"
android:layout_centerHorizontal = "true"
/>
</RelativeLayout>
答案 3 :(得分:0)
您是否考虑过使用TableLayout
?它最适合像这样的网格视图。您甚至可以为不同的列等指定权重,并且具有不同的列宽。
答案 4 :(得分:0)
为你的第二个RelativeLayout使用 android:layout_height =“wrap_content”
答案 5 :(得分:0)
设置
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_weight="1"
在ImageView和TextView中,然后使用LinearLayout(以gravity = center为单位)作为容器,它可以正常工作