如何在线性布局中保持 TextView 为中心
Posted
技术标签:
【中文标题】如何在线性布局中保持 TextView 为中心【英文标题】:How to keep TextView as center inside linear layout 【发布时间】:2018-08-13 04:55:53 【问题描述】:这是我的 xml 代码,我希望将中心 Textview
保持在包含 textview
和视图的线性布局内,但我希望文本视图在线性布局底部显示中心以查看,即按钮 textview
应该从顶部视图和底部居中linearLayout
.
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:id="@+id/no_vouchers_view"
android:layout_
android:layout_>
<android.support.v7.widget.CardView
android:id="@+id/xxlayout"
android:layout_
android:layout_
android:layout_marginTop="@dimen/header_height"
android:visibility="gone"
tools:visibility="visible">
<LinearLayout
android:layout_
android:layout_
android:layout_margin="@dimen/margin_12"
android:orientation="vertical">
<TextView
android:id="@+id/xxmessage"
style="@style/Typeface.Body.TextMidGrey"
android:layout_
android:layout_
android:lineSpacingExtra="@dimen/tfl_6"
tools:text="KJGSAHJDGJKSGDASAGDHJGAS" />
<View
android:layout_
android:layout_
android:layout_marginTop="@dimen/margin_16"
android:background="@color/text_light_grey" />
<LinearLayout
android:layout_
android:layout_
android:orientation="vertical">
<TextView
android:id="@+id/button"
style="@style/Typeface.Body.Bold.White"
android:layout_
android:layout_
android:layout_marginTop="@dimen/margin_16"
android:paddingBottom="@dimen/padding_12"
android:paddingTop="@dimen/padding_12"
android:background="@drawable/welcome_screen_button_selector"
android:layout_centerHorizontal="true"
android:layout_gravity="center"
android:gravity="center"
android:text="@string/convert_points_to_vouchers"
android:textAllCaps="false" />
</LinearLayout>
</LinearLayout>
</android.support.v7.widget.CardView>
</RelativeLayout>
【问题讨论】:
你能展示你需要的用户界面图片吗?看图比上百个字更容易理解。 How to center a textview inside a linearlayout的可能重复 我的问题是线性布局内部有视图,所以我在线性布局中保留了带有视图和底部布局的中心按钮 textview 【参考方案1】:使用 android:layout_width="match_parent"
&
android:gravity="center"
你的TextView
会起作用的
使用这个
<TextView
android:id="@+id/xxmessage"
style="@style/Typeface.Body.TextMidGrey"
android:layout_
android:gravity="center"
android:layout_
android:lineSpacingExtra="@dimen/tfl_6"
tools:text="KJGSAHJDGJKSGDASAGDHJGAS" />
不是这个
<TextView
android:id="@+id/xxmessage"
style="@style/Typeface.Body.TextMidGrey"
android:layout_
android:layout_
android:lineSpacingExtra="@dimen/tfl_6"
tools:text="KJGSAHJDGJKSGDASAGDHJGAS" />
示例代码
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:id="@+id/no_vouchers_view"
android:layout_
android:layout_>
<android.support.v7.widget.CardView
android:id="@+id/xxlayout"
android:layout_
android:layout_
android:layout_marginTop="@dimen/header_height"
android:visibility="gone"
tools:visibility="visible">
<LinearLayout
android:layout_
android:layout_
android:layout_margin="@dimen/margin_12"
android:orientation="vertical">
<TextView
android:id="@+id/xxmessage"
style="@style/Typeface.Body.TextMidGrey"
android:layout_
android:gravity="center"
android:layout_
android:lineSpacingExtra="@dimen/tfl_6"
tools:text="KJGSAHJDGJKSGDASAGDHJGAS" />
<View
android:layout_
android:layout_
android:layout_marginTop="@dimen/margin_16"
android:background="@color/text_light_grey" />
<LinearLayout
android:layout_
android:layout_
android:gravity="center"
android:orientation="vertical">
<TextView
android:id="@+id/button"
style="@style/Typeface.Body.Bold.White"
android:layout_
android:layout_
android:layout_marginTop="@dimen/margin_16"
android:paddingBottom="@dimen/padding_12"
android:paddingTop="@dimen/padding_12"
android:background="@drawable/welcome_screen_button_selector"
android:layout_centerHorizontal="true"
android:layout_gravity="center"
android:gravity="center"
android:text="@string/convert_points_to_vouchers"
android:textAllCaps="false" />
</LinearLayout>
</LinearLayout>
</android.support.v7.widget.CardView>
</RelativeLayout>
【讨论】:
我不是在谈论 xxxmessage 我在谈论按钮 textview @Nilesh Rathod 从视图中仍然可以看到它在按钮和视图之间需要更多的间隙 从LinearLayout
中删除android:layout_margin="@dimen/margin_12"
如果我要删除,那么上面的文本视图将设置为向上
@AnilThakur 用当前输出和预期输出更新您的问题【参考方案2】:
试试这个 android:layout_gravity="center"
<TextView
android:id="@+id/xxmessage"
style="@style/Typeface.Body.TextMidGrey"
android:layout_
android:layout_
android:layout_gravity="center"
android:lineSpacingExtra="@dimen/tfl_6"
tools:text="KJGSAHJDGJKSGDASAGDHJGAS" />
【讨论】:
【参考方案3】:在 android 中创建嵌套布局会导致各种 performance issues。
我建议你使用
ConstraintLayout 而不是线性布局。
ConstraintLayout
有助于构建响应式 UI。
使用ConstraintLayout
,您可以easily drag/drop any element 并根据您的活动限制它们。
【讨论】:
我不必使用 ConstraintLayout。以上是关于如何在线性布局中保持 TextView 为中心的主要内容,如果未能解决你的问题,请参考以下文章