我正在开发一个具有启动画面的应用程序,您可以在下面的图片中看到它。 我的问题是我需要放一个进度条,如下图所示,没有很多布局,因为现在我有八个布局才能获得这种效果(layout-sw320dp,layout-sw320dp-land,layout-sw480dp ,layout-sw480dp-land ... 600,720)。 我尝试使用相对布局并水平居中进度条,但是使用不同的屏幕尺寸,进度条会垂直获得其他位置。
我可以用较少的文件夹来解决它吗?
这是我的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>
答案 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"
relatively
将paddingBottom
放在图片下方。您可以更改布局<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
现在,您将保留上述布局,并根据屏幕尺寸创建多个值,而不是使用多个布局。含义:
因此,您的视图{{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>
我希望这对其他人有用