在Android中对齐不同屏幕尺寸的进度条

时间:2014-04-16 20:02:15

标签: android android-layout

我正在开发一个具有启动画面的应用程序,您可以在下面的图片中看到它。 我的问题是我需要放一个进度条,如下图所示,没有很多布局,因为现在我有八个布局才能获得这种效果(layout-sw320dp,layout-sw320dp-land,layout-sw480dp ,layout-sw480dp-land ... 600,720)。 我尝试使用相对布局并水平居中进度条,但是使用不同的屏幕尺寸,进度条会垂直获得其他位置。

我可以用较少的文件夹来解决它吗?

enter image description here

这是我的320dp布局文件:

<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:tools="http://schemas.android.com/tools"
    android:id="@+id/RelativeLayout1"
    android:layout_width="fill_parent"
    android:layout_height="fill_parent"
    android:background="@drawable/splash_screen_land"
    android:orientation="vertical" >

    <ProgressBar
        android:id="@+id/progressBar1"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_alignParentBottom="true"
        android:layout_centerHorizontal="true"
        android:layout_marginBottom="24dp" />

</RelativeLayout>

3 个答案:

答案 0 :(得分:1)

也许使用layout_weight的3个水平LinearLayout可以根据比率对所有内容进行水平对齐,包含一个具有居中重力的垂直LinearLayout?

如果您发布实际的布局文件,可能更容易解释。

编辑:

类似的东西:(你可能需要使用layout_weight值来获得你想要的大小:

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:orientation="horizontal" android:layout_width="match_parent"
    android:layout_height="match_parent">

    <LinearLayout
        android:layout_width="0dp"
        android:layout_height="wrap_content"
        android:layout_weight="1"></LinearLayout>
    <LinearLayout
        android:orientation="vertical"
        android:layout_width="0dp"
        android:layout_height="wrap_content"
        android:layout_weight="1">
        <LinearLayout
            android:layout_width="wrap_content"
            android:layout_height="0dp"
            android:layout_weight="1"></LinearLayout>
        <LinearLayout
            android:layout_width="wrap_content"
            android:layout_height="0dp"
            android:layout_weight="1">
            <ImageView
                android:layout_width="wrap_content"
                android:layout_height="wrap_content" 
                android:adjustViewBounds="true"
                android:src="@drawable/splash_screen_land"/>
            <ProgressBar
                android:layout_width="wrap_content"
                android:layout_height="wrap_content" />    

        </LinearLayout>
        <LinearLayout
            android:layout_width="wrap_content"
            android:layout_height="0dp"
            android:layout_weight="1"></LinearLayout>
    </LinearLayout>
    <LinearLayout
        android:layout_width="0dp"
        android:layout_height="wrap_content"
        android:layout_weight="1"></LinearLayout>

</LinearLayout>

答案 1 :(得分:1)

我建议你只使用一个layout文件,比方说splash.xml。使用RelativeLayout添加ImageView android:layout_centerInParent="true" ProgressBar。然后使用android:below="@id/image" relativelypaddingBottom放在图片下方。您可以更改布局<RelativeLayout android:layout_width="wrap_content" android:layout_height="wrap_content" android:paddingBottom="@dimen/padding_bottom"> <ImageView android:id="@id/image" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_centerInParent="true" /> <ProgressBar android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_below="@id/image" android:minHeight="@dimen/progress_height" android:minWidth="@dimen/progress_height" /> </RelativeLayout> 以调整布局中心的视图。

layout

现在,您将保留上述布局,并根据屏幕尺寸创建多个值,而不是使用多个布局。含义:

  • 值/ dimens.xml
  • 值-大/ dimens.xml
  • 值-脊/ dimens.xml

因此,您的视图{{1}}不会从屏幕更改为另一个屏幕,只有它们的大小才会显示!

答案 2 :(得分:0)

我可以使用weightSum,layout_weight属性来解决它,这对于模仿百分比非常有用。

这是我解决问题的代码:

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:tools="http://schemas.android.com/tools"
    android:id="@+id/LinearLayout1"
    android:layout_width="fill_parent"
    android:layout_height="fill_parent"
    android:background="@drawable/splash_screen_land"
    android:gravity="center_horizontal"
    android:orientation="vertical" >

    <android.support.v7.widget.Space
        android:id="@+id/space1"
        android:layout_weight="100"
        android:layout_width="match_parent"
        android:layout_height="0dp" />

    <ProgressBar
        android:id="@+id/progressBar1"
        android:layout_width="match_parent"
        android:layout_height="0dp"
        android:layout_weight="15" />

    <TextView
        android:id="@+id/textView1"
        android:layout_width="match_parent"
        android:layout_height="0dp"
        android:layout_weight="17"
        android:gravity="center"
        android:text="TextView"
        android:textSize="20sp" />

</LinearLayout>

我希望这对其他人有用