好的,首先,我搜索了所有的互联网,但没有人有类似的问题。所以,我想要的只有3个textViews,底部与屏幕对齐,宽度相同。这是一张代表我想要的图像:
这是我的代码:
<RelativeLayout android:layout_width="match_parent" android:layout_height="match_parent">
<LinearLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_alignParentBottom="true">
<TextView
android:text="@string/help_1"
android:layout_weight="0.33"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:background="@drawable/mynicebg1"
android:layout_gravity="bottom"/>
<TextView
android:text="@string/help_2"
android:layout_weight="0.33"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:background="@drawable/mynicebg2"
android:layout_gravity="bottom"/>
<TextView
android:text="@string/help_3"
android:layout_weight="0.33"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:background="@drawable/mynicebg3"
android:layout_gravity="bottom"/>
</LinearLayout>
</RelativeLayout>
嗯,它适用于3个textViews具有相同的高度,但当它们的大小不同时,我得到以下结果:
另一个奇怪的行为是,当我将最大文本的layout_gravity设置为“center-vertical”时,我得到以下结果:
很明显,我疯了,尝试了另一种中心垂直组合,但最初没有任何效果:
那么,关于如何解决这个问题的任何提示?
答案 0 :(得分:103)
所有其他答案都错了。重点:
RelativeLayout
。您只需LinearLayout
。android:baselineAligned="false"
。我实际上只是通过查看LinearLayout
来源找到了这个。它在文档中,但他们没有提到默认情况下它是! 无论如何,这是代码:
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:baselineAligned="false">
<TextView
android:text="dfg dfg dfg dfg dfg dfg dfg dfg dfg dfg dfg dfg dfg dfg dfg dfg dfg dfg dfg dfg"
android:layout_weight="1"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:background="#eeffee"
android:layout_gravity="bottom"/>
<TextView
android:text="asd asd asd asd asd asd asd asd asd asd"
android:layout_weight="1"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:background="#eeeeff"
android:layout_gravity="bottom"/>
<TextView
android:text="qweoiu qweoiuqwe oiqwe qwoeiu qweoiu qweoiuq weoiuqw eoiquw eoiqwue oqiweu qowieu qowieu qoiweu qowieu qowieu qowieu qowieu qoiweu qowieu qoiwue "
android:layout_weight="1"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:background="#ffeeee"
android:layout_gravity="bottom"/>
</LinearLayout>
它看起来如何:
答案 1 :(得分:4)
确定。所以我遇到了同样的问题,但是使用切换按钮而不是文本视图。出于某种原因,如果LinearLayout(Horizontal)中的一个元素的高度与布局中其余视图的高度不同,并且设置为与其他元素具有相同的重力,则有效地“忽略”重力。
我设法通过将每个视图包装在RelativeLayout中来设置所需的行为,并在相对布局上设置android:gravity而不是每个按钮上的android:layout_gravity。我还将android:layout_weight从按钮移动到相对布局。
所以不要:
<LinearLayout
... >
<ToggleButton
...
android:layout_height="wrap_content"
android:layout_width="fill_parent"
android:layout_weight="1"
android:layout_gravity="bottom"/>
<ToggleButton
...
android:layout_height="wrap_content"
android:layout_width="fill_parent"
android:layout_weight="1"
android:layout_gravity="bottom"/>
<ToggleButton
...
android:layout_height="wrap_content"
android:layout_width="fill_parent"
android:layout_weight="1"
android:layout_gravity="bottom"/>
</LinearLayout>
这给出了与报告相同的问题,而是做了:
<LinearLayout
... >
<RelativeLayout
...
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:layout_weight="1"
android:gravity="bottom" >
<ToggleButton
...
android:layout_height="wrap_content"
android:layout_width="fill_parent"
/>
<RelativeLayout
...
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:layout_weight="1"
android:gravity="bottom" >
<ToggleButton
...
android:layout_height="wrap_content"
android:layout_width="fill_parent"
/>
<RelativeLayout
...
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:layout_weight="1"
android:gravity="bottom" >
<ToggleButton
...
android:layout_height="wrap_content"
android:layout_width="fill_parent"
/>
</LinearLayout>
答案 2 :(得分:1)
**编辑:
如果这不能解决所有问题,请添加Timmmmm下面的答案之一中提到的baselinealigned标志。这是一种更好的方法。
使用此
编辑布局: 好的我编辑了它,并添加了颜色和重力,让底部的文本视图具有相同的高度和宽度,并且还使每个视图底部和中心的文本相邻。
<LinearLayout
android:orientation="horizontal"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:layout_alignParentBottom="true"
android:gravity="fill_vertical" >
<TextView
android:layout_width="match_parent"
android:layout_height="match_parent"
android:layout_weight="1.0"
android:layout_gravity="fill_vertical"
android:gravity="bottom|center"
android:text="text1 jkjhh jhguk jvugy v ghjv kjhvygvusdioc jgytuayhashg hgyff"
android:textColor="#000000"
android:background="#FFFF00"
/>
<TextView
android:layout_width="match_parent"
android:layout_height="match_parent"
android:layout_weight="1.0"
android:layout_gravity="fill_vertical"
android:gravity="bottom|center"
android:text="t2"
android:textColor="#000000"
android:background="#FF0000"
/>
<TextView
android:layout_width="match_parent"
android:layout_height="match_parent"
android:layout_weight="1.0"
android:layout_gravity="fill_vertical"
android:gravity="bottom|center"
android:text="This is a long text. This is a long text. This is a long text. This is a long text.This is a long text. This is a long text. This is a long text."
android:textColor="#000000"
android:background="#00FF00"
/>
</LinearLayout>
它应该完全按照你的要求行事。
它在RelativeLayout中使用LinearLayout,但有时需要将它们嵌套以获得我们想要的内容。在相对布局中添加您可能需要的任何其他视图,只要RelativeLayout中的最后一个子项是如上所示的LinearLayout,您将始终将文本放在底部。
答案 3 :(得分:1)
与Timmm的答案相同,但您也可以android:gravity="bottom"
使用LinearLayout
android:layout_gravity="bottom"
属性而不是TextView
{/ 1}}。
像这样:
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:orientation="horizontal"
android:gravity="bottom"
android:baselineAligned="false">
<TextView
android:layout_width="0dp"
android:layout_height="wrap_content"
android:text="your text 1......"
android:layout_weight="1"/>
<TextView
android:layout_width="0dp"
android:layout_height="wrap_content"
android:text="your text 2......"
android:layout_weight="1"/>
<TextView
android:layout_width="0dp"
android:layout_height="wrap_content"
android:text="your text 3......"
android:layout_weight="1"/>
</LinearLayout>
答案 4 :(得分:0)
如果你没有使用RelativeLayout而不是Linear,那我就会这样做,我想:
<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout android:id="@+id/LinearLayout1"
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="fill_parent" android:text="@string/hello"
android:id="@+id/TextView1" android:layout_above="@+id/TextView2"
android:layout_alignLeft="@+id/TextView2"></TextView>
<TextView android:layout_height="wrap_content"
android:layout_width="fill_parent" android:text="@string/hello"
android:id="@+id/TextView2" android:layout_alignParentBottom="true"> </TextView>
</RelativeLayout>
答案 5 :(得分:0)
如果你想让所有三个子视图的高度相同,那么将height更改为“0”,将LinearLayout的android:weightSum设置为3,并将每个视图的android:layout_weight设置为1。
答案 6 :(得分:0)
一个更简单的解决方案是使用
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:orientation="vertical"
android:layout_width="match_parent"
android:layout_height="wrap_content">
<Space
android:layout_width="0dp"
android:layout_height="1dp"
android:layout_weight="1" />
<TextView
android:text="Any Text"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:background="#eeffee"/>
<TextView
android:text="Any Text2"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:background="#eeeeff"/>
<TextView
android:text="AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:background="#ffeeee"/>
</LinearLayout>