这里合适的是线性布局还是相对布局

时间:2018-06-23 05:54:39

标签: android android-layout android-linearlayout android-view android-relativelayout

请检查所附的屏幕截图,以其简单的布局进行设计,我要在其中将进度条和两个文本视图保持在中间。我使用线性布局作为父级,并将布局重力设置为中心,因此,我希望所有视图都应与线性中心对齐。 XML图形预览提供了预期的输出,但是如果我将其闪烁到设备上,则底部会有一个缝隙。我试图了解可能是什么原因,您能帮我这个设计有什么问题吗?在这种情况下,我是否必须考虑相对布局,为什么我无法通过线性布局实现这一目标?

这是代码-

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:background="@drawable/bg_progress"
android:orientation="vertical"
android:gravity="center">


<ProgressBar
    android:id="@+id/progressBar2"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:layout_marginBottom="@dimen/reg_dimen_12dp" />

<TextView
    android:id="@+id/textView"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:text="@string/sync_data_title"
    android:textColor="@color/white"
    android:textStyle="bold" />


<TextView
    android:id="@+id/textView9"
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    android:layout_marginLeft="50dp"
    android:layout_marginRight="50dp"
    android:layout_marginTop="@dimen/reg_dimen_24dp"
    android:gravity="center_horizontal"
    android:text="@string/sync_data_desc"
    android:textColor="@color/white" />
   </LinearLayout>

下面是我正在尝试的布局

enter image description here

在设备上,如下所示,

enter image description here

3 个答案:

答案 0 :(得分:0)

尝试使用此方法来修复RelativeLayout

  <?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="match_parent"
    android:background="@drawable/bg_progress"
    android:layout_height="match_parent">

    <ProgressBar
        android:id="@+id/progressBar2"
        android:layout_width="wrap_content"
        android:layout_above="@+id/textView"
        android:layout_centerHorizontal="true"
        android:layout_height="wrap_content"
        android:layout_marginBottom="@dimen/reg_dimen_12dp" />

    <TextView
        android:id="@+id/textView"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="@string/sync_data_title"
        android:layout_centerInParent="true"
        android:textColor="@color/white"
        android:textStyle="bold" />


    <TextView
        android:id="@+id/textView9"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:layout_marginLeft="50dp"
        android:layout_marginRight="50dp"
        android:layout_below="@+id/textView"
        android:layout_centerHorizontal="true"
        android:layout_marginTop="@dimen/reg_dimen_24dp"
        android:gravity="center_horizontal"
        android:text="@string/sync_data_desc"
        android:textColor="@color/white" />
</RelativeLayout>

答案 1 :(得分:0)

您也可以使用形状可绘制的图像代替大图像作为背景。

这是您的背景的示例形状,并在LinearLayout的背景中使用它。

<?xml version="1.0" encoding="utf-8"?>
<shape xmlns:android="http://schemas.android.com/apk/res/android"
    android:shape="rectangle">
    <gradient
        android:endColor="#EB7C97"
        android:startColor="#ED94A9"
        android:type="linear" />
</shape>

答案 2 :(得分:0)

另一种方法:

dynamic_pointer_cast