我TextView
想将其固定在LinearLayout
与垂直排列的元素一起使用的景观活动的底部。
我已经设置android:gravity="bottom"
了文本视图,但是它仍然喜欢恰好位于LinearLayout
我不希望它执行的操作的最后一个元素之下。
有什么建议?
Answers:
更新:我仍然对此问题持否定态度,这仍然是公认的答案,我认为我的回答很差。本着确保提供最佳信息的精神,我决定更新此答案。
在现代的Android中,我将使用ConstraintLayout
该功能。它更高效,更直接。
<ConstraintLayout>
<View
android:id="@+id/view1"
...other attributes elided... />
<View
android:id="@id/view2"
app:layout_constraintTop_toBottomOf="@id/view1" />
...other attributes elided... />
...etc for other views that should be aligned top to bottom...
<TextView
app:layout_constraintBottom_toBottomOf="parent" />
如果您不想使用ConstraintLayout,则将LinearLayout与扩展视图一起使用是一种处理占用额外空间的简单明了的好方法(请参阅@Matthew Wills的回答)。如果您不想在底视图上方扩展任何视图的背景,则可以添加不可见的视图以占用空间。
我最初给出的答案有效,但效率不高。对于单个顶层布局而言,效率低下可能并不重要,但是在ListView
或中这将是一个糟糕的实现RecyclerView
,并且没有任何理由这样做,因为存在更好的大致相同级别的方法努力和复杂性,如果不是更简单的话。
将TextView从LinearLayout中取出,然后将LinearLayout和TextView放在RelativeLayout中。将属性添加android:layout_alignParentBottom="true"
到TextView。除去上述属性之外的所有名称空间和其他属性:
<RelativeLayout>
<LinearLayout>
<!-- All your other elements in here -->
</LinearLayout>
<TextView
android:layout_alignParentBottom="true" />
</RelativeLayout>
您将必须通过设置上面的视图之一来填充剩余空间android:layout_weight="1"
。这会将您的最后一个视图下推至底部。
这是我的意思的简要概述:
<LinearLayout android:orientation="vertical">
<View/>
<View android:layout_weight="1"/>
<View/>
<View android:id="@+id/bottom"/>
</LinearLayout>
每个子视图的高度在哪里,"wrap_content"
其他的都在哪里"fill_parent"
。
我认为这将是完美的解决方案:
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical">
<!-- Other views -->
<Space
android:layout_width="match_parent"
android:layout_height="0dp"
android:layout_weight="1"/>
<!-- Target view below -->
<View
android:layout_width="match_parent"
android:layout_height="wrap_content">
</LinearLayout>
您应该将参数gravity放到底部而不是在文本视图中,而不是在线性布局中。像这样:
<LinearLayout
xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical"
android:gravity="bottom|end">
<TextView
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:text="Something"/>
</LinearLayout>
步骤1:在线性布局内创建两个视图
第2步:第一个视图必须设置为android:layout_weight =“ 1”
步骤3:第二个视图将自动向下推
<LinearLayout
android:id="@+id/botton_header"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:orientation="vertical" >
<View
android:layout_width="match_parent"
android:layout_height="0dp"
android:layout_weight="1" />
<Button
android:id="@+id/btn_health_advice"
android:layout_width="wrap_content"
android:layout_height="wrap_content"/>
</LinearLayout>
喜欢这个
<LinearLayout
android:id="@+id/LinearLayouts02"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical"
android:gravity="bottom|end">
<TextView
android:id="@+id/texts1"
android:layout_height="match_parent"
android:layout_width="match_parent"
android:layout_weight="2"
android:text="@string/forgotpass"
android:padding="7dp"
android:gravity="bottom|center_horizontal"
android:paddingLeft="10dp"
android:layout_marginBottom="30dp"
android:bottomLeftRadius="10dp"
android:bottomRightRadius="50dp"
android:fontFamily="sans-serif-condensed"
android:textColor="@color/colorAccent"
android:textStyle="bold"
android:textSize="16sp"
android:topLeftRadius="10dp"
android:topRightRadius="10dp"
/>
</LinearLayout>
尝试这个
<LinearLayout
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_gravity="bottom"
android:orientation="vertical" >
<TextView
android:id="@+id/textViewProfileName"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="TextView" />
</LinearLayout>
android:gravity="bottom"
从中删除TextView
并将其添加到中即可LinearLayout
。您的问题将得到解决。