我想从中心向左移动一个搜索栏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代码只显示它的中心位置。
答案 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_centerHorizontal
和android: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
。