我一定是做错了,布局让我很困惑,所以我希望有人能指导我正确的方向。整个事情一团糟,因为自从我一个月前创建它以来,我一直在不停地摆弄它,试图解决这里那里的小问题,所以我提前为这次灾难道歉。
从字面上看,我想要的只是一个 LinearLayout
,其中所有内容都水平和垂直居中。
这就是它在我的设计页面中的显示方式。
在我转储我的布局之前,请允许我解释一下发生了什么。
我有一个 TextView
,它在 ImageButton
上方显示状态消息。在 ImageButton
下方,我有一个 TextSwitcher
,最后是一个圆形 ProgressBar
。
我不得不将 android:adjustViewBounds="true"
和 android:scaleType="fitCenter"
放在我的 ImageButton
上,因为图像比适合的大得多,否则。
无论如何,这里是转储。希望有人能提出建议。
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:paddingBottom="0dp"
android:paddingLeft="0dp"
android:paddingRight="0dp"
android:paddingTop="0dp"
android:orientation="vertical"
android:layout_gravity="fill_vertical|center"
android:configChanges="keyboardHidden|orientation|screenSize"
android:screenOrientation="nosensor"
app:layout_behavior="@string/appbar_scrolling_view_behavior"
tools:context="com.gesslar.threshvote.MainActivity"
android:background="@color/colorFaded"
tools:showIn="@layout/activity_main">
<TextView android:id="@+id/textStatusMessage"
android:textColor="@color/colorText"
android:textAppearance="?android:attr/textAppearanceLarge"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:gravity="center" />
<ImageButton android:id="@+id/buttonVote"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:clickable="false"
android:src="@drawable/ic_vote_button_image"
android:background="@android:color/transparent"
android:scaleType="fitCenter"
android:onClick="onVotePressed"
android:layout_gravity="center_horizontal|center_vertical"
android:adjustViewBounds="true" />
<TextSwitcher android:id="@+id/textCountdown"
android:gravity="center"
android:layout_gravity="center_horizontal"
android:textColor="@color/colorText"
android:textAppearance="?android:attr/textAppearanceLarge"
android:textSize="@dimen/countdown"
android:includeFontPadding="false"
android:layout_width="match_parent"
android:layout_height="wrap_content" />
<ProgressBar android:id="@+id/loadingBar"
style="@style/Widget.AppCompat.ProgressBar"
android:layout_gravity="end"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:visibility="invisible"
android:indeterminate="true"/>
</LinearLayout>
最佳答案
如果您仍然喜欢使用LinearLayout
,您可以像这样命令您的布局在水平和垂直方向上都有一个布局中心
<LinearLayout
xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:background="#0ff"
android:orientation="horizontal" >
<LinearLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_gravity="center"
android:orientation="vertical" >
<Button
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_gravity="center"
android:text="Button Center Vertical/ Horizontal" />
</LinearLayout>
</LinearLayout>
或者简单地使用 RelativeLayout
和 android:layout_centerInParent="true"
来让布局居中于两个方向
希望对你有帮助
关于Android:LinearLayout 的布局问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35906219/