Как перемещать маржу 20dip слева от центра?
Я хочу переместить маркер пробега 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 показывает только центр.
Ответы
Ответ 1
Я сделал обходной путь с 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 тем, что вы хотите. Тот же принцип, если вы хотите иметь что-то справа от центра.
Ответ 2
android:layout_centerHorizontal
и android:layout_marginLeft
не работают вместе.
Обходным путем является использование невидимого представления, такого как 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" />
Ответ 3
Ответ:
Добавьте 40dp дополнение справа.
Почему это работает:
Поскольку это дополнение относится к вашему представлению, и поэтому оно учитывает его окончательный размер. Для всех Android-устройств ваш мягкий вид будет на 40dp шире, чем если бы он не был дополнен, и ваше содержимое View не изменится.
Кроме того, поскольку вы центрируетесь, для каждого 2dp, который вы помещаете в android:paddingRight
, ваш вид будет перемещаться 1dp влево, и, таким образом, ваш вид будет перемещаться 20dp
Ответ 4
Удалите centerHorizontal = true
.