我在ProgressBar
内有一个RelativeLayout
和其他一些视图元素,我无法垂直居中显示进度条。我尝试了android:layout_centerVertical="true"
,android:layout_gravity="center_vertical"
,android:layout_gravity="center"
和android:gravity="center"
,但它不起作用!
这是我的布局:
<android.support.v4.widget.SwipeRefreshLayout
android:layout_width="match_parent"
android:layout_height="match_parent"
xmlns:android="http://schemas.android.com/apk/res/android"
android:paddingLeft="@dimen/activity_horizontal_margin"
android:paddingRight="@dimen/activity_horizontal_margin"
android:paddingBottom="@dimen/activity_vertical_margin"
android:id="@+id/swipe">
<ScrollView
android:layout_width="match_parent"
android:layout_height="match_parent">
<RelativeLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:paddingTop="@dimen/activity_vertical_margin">
<ProgressBar
android:id="@+id/progressBar1"
style="?android:attr/progressBarStyleLarge"
android:visibility="visible"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_gravity="center_vertical"
android:layout_centerHorizontal="true"
android:layout_centerVertical="true"
android:indeterminate="true" />
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="Random number:"
android:id="@+id/lbl"
android:visibility="gone" />
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:id="@+id/rndNum"
android:layout_toRightOf="@id/lbl"
android:visibility="gone" />
</RelativeLayout>
</ScrollView>
修改:但是,进度条水平居中。
更新:这是视图的呈现方式
答案 0 :(得分:2)
请尝试这种方式,希望这有助于您解决问题。
如果您不想将RelativeLayout layout_height设置为match_parent,请将FrameLayout作为ScrollView的父布局,并将ProgressBar置于外侧RelativeLayout,如下所示。
<android.support.v4.widget.SwipeRefreshLayout
android:layout_width="match_parent"
android:layout_height="match_parent"
xmlns:android="http://schemas.android.com/apk/res/android"
android:paddingLeft="@dimen/activity_horizontal_margin"
android:paddingRight="@dimen/activity_horizontal_margin"
android:paddingBottom="@dimen/activity_vertical_margin"
android:id="@+id/swipe">
<FrameLayout
android:layout_width="match_parent"
android:layout_height="match_parent">
<ScrollView
android:layout_width="match_parent"
android:layout_height="match_parent">
<RelativeLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:paddingTop="@dimen/activity_vertical_margin">
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="Random number:"
android:id="@+id/lbl"
android:visibility="gone" />
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:id="@+id/rndNum"
android:layout_toRightOf="@id/lbl"
android:visibility="gone" />
</RelativeLayout>
</ScrollView>
<ProgressBar
android:id="@+id/progressBar1"
style="?android:attr/progressBarStyleLarge"
android:visibility="visible"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_gravity="center"
android:indeterminate="true" />
</FrameLayout>
</android.support.v4.widget.SwipeRefreshLayout>
答案 1 :(得分:1)
由于您的ScrollView
导致问题,您可以通过在RelativeLayout
添加以下行来解决问题,
android:layout_gravity="center"
android:gravity="center"'
但我不确定你为什么要在ScrollView
内垂直居中视图,如果ScrollView
的内容超过屏幕尺寸,这将毫无价值。但这个答案肯定会符合你目前的目的。
答案 2 :(得分:0)
在RelativeLayout中使用 android:layout_centerInParent =&#34; true&#34; 来居中视图
像
<ProgressBar
android:id="@+id/progressBar1"
style="?android:attr/progressBarStyleLarge"
android:visibility="visible"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_gravity="center_vertical"
android:layout_centerInParent="true"
android:layout_centerHorizontal="true"
android:layout_centerVertical="true"
android:indeterminate="true" />
答案 3 :(得分:0)
为此,您必须使用Framelayout
。
答案 4 :(得分:0)
除其他答案外,请注意,如果您的progressBar
的父视图或父视图或...是ScrollView
,则上述layour_gravity
,{{ 1}}和gravity
将起作用。因此,您需要将ProgressBar放在center_in_parent
之外。