如何从中心向左移动20dip边距?

时间:2011-10-03 04:40:25

标签: android layout

我想从中心向左移动一个搜索栏20dip边距。

android:progressDrawable="@drawable/progress_vertical"
            android:thumb="@drawable/seek_thumb" android:layout_height="80dip"
            android:layout_width="20dip" android:layout_marginBottom="50dip"
            android:layout_alignParentBottom="true" android:visibility="gone"
            android:layout_centerHorizontal="true" android:layout_marginLeft="20dip" /> 

但上面的xml代码只显示它的中心位置。

4 个答案:

答案 0 :(得分:13)

我在中间创建了一个没有内容(并且不可见)的TextView。

<TextView
        android:id="@+id/viewMiddleInvisible"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_below="@+id/btnAtTheTop"
        android:layout_centerHorizontal="true"
        android:layout_marginTop="30dp" />

<TextView
        android:id="@+id/tvAtLeft"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_alignBaseline="@id/viewMiddleInvisible"
        android:layout_marginRight="10dp"
        android:layout_toLeftOf="@id/viewMiddleInvisible"
        android:text="Some text" />

你显然必须用你想要的任何东西取代tvAtLeft。如果你想在中心的右边有一些东西,那就是相同的原则。

答案 1 :(得分:9)

android:layout_centerHorizontalandroid:layout_marginLeft不能一起工作。

解决方法是使用不可见的视图,例如Space

  

Space是一个轻量级View子类,可用于创建间隙   通用布局中的组件之间。

因此,对于您的情况,在您的RelativeLayout内,应该这样做:

<Space
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:layout_centerHorizontal="true"
    android:id="@+id/blankspace" />

<ProgressBar
    android:progressDrawable="@drawable/progress_vertical"
    android:thumb="@drawable/seek_thumb"
    android:layout_height="80dip"
    android:layout_width="20dip"
    android:layout_marginBottom="50dip"
    android:layout_alignParentBottom="true"
    android:layout_toRightOf="@id/blankspace"
    android:visibility="gone" />

答案 2 :(得分:0)

最简洁的答案,不需要使用其他视图污染您的XML只是:

  

在右侧添加40dp填充。


理由:

填充属于您的视图,因此它会计入最终尺寸。如果你添加40dp填充,你的视图将是40dp更宽,没有填充。

因为你是居中的,所以对于每2dp的填充,你的View只会向 1dp 移动到左边,所以你的View只会根据需要移动20dp。

答案 3 :(得分:-4)

删除centerHorizontal = true