Если вы посмотрите на прикрепленное изображение. Мне нужно, чтобы моя кнопка была выровнена по правому краю, но по какой-то причине она не работает с 'gravity: right' ...
Вот мой код для этого макета:
<LinearLayout
xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:orientation="horizontal"
android:layout_marginTop="35dp">
<TextView
android:id="@+id/lblExpenseCancel"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="@string/cancel"
android:textColor="#404040"
android:layout_marginLeft="10dp"
android:textSize="20sp"
android:layout_marginTop="9dp" />
<Button
android:id="@+id/btnAddExpense"
android:layout_width="wrap_content"
android:layout_height="45dp"
android:background="@drawable/stitch_button"
android:layout_marginLeft="10dp"
android:text="@string/add"
android:layout_gravity="right"
android:layout_marginRight="15dp" />
</LinearLayout>
Почему не работает ?!
android
android-layout
ROMANIA_engineer
источник
источник
Ответы:
Используйте для этого код ниже
источник
Единое
LinearLayout
решение. Только добавление простого представления с интервалом:(Никто, похоже, не упомянул об этом, только более сложные решения с несколькими макетами.)
Обратите внимание на «подсвеченный» вид, больше я ничего не менял. Высота = 0 гарантирует, что это не будет видно. Ширина = 0, потому что ширина определяется на
LinearLayout
основе веса = 1. Это означает, что вид проставки будет максимально вытянут в направлении (ориентации)LinearLayout
.Обратите внимание, что вы должны использовать
android.widget.Space
илиandroid.support.v4.widget.Space
вместо,View
если ваш уровень API и / или зависимости позволяют это.Space
выполняет работу более дешевым способом, потому что он только измеряет, а не пытается нарисовать что-то подобноеView
; это также более выразительно передает намерение.источник
Реальное решение для этого случая:
android:layout_weight="1"
для TextView, и ваша кнопка переместится вправо!источник
Я знаю, что этот вопрос был задан некоторое время назад, но я делал это раньше, и он дает больше контроля при выравнивании элементов. Если вы посмотрите на это как на веб-программирование, это поможет. Вы просто вставляете другую
LinearLayout
, внутри которой будет ваша кнопка. Затем вы можете изменить гравитацию макета кнопки и сдвинуть ее вправо, покаTextView
остается слева.Попробуйте этот код:
Возможно, вам придется поиграть с отступом во вложенном макете, чтобы он действовал так, как вы хотите.
источник
Попробуй это
источник
Как упоминалось пару раз ранее: переключение с LinearLayout на RelativeLayout работает, но вы также можете решить проблему, вместо того, чтобы ее избегать. Используйте инструменты, которые предоставляет LinearLayout: задайте TextView вес = 1 (см. Код ниже), вес вашей кнопки должен оставаться 0 или отсутствовать. В этом случае TextView займет все оставшееся пространство, которое не используется для отображения содержимого вашего TextView или ButtonView, и сдвинет вашу кнопку вправо.
источник
RelativeLayout
из-за проблем с памятью, поскольку онRelativeLayout
потребляет намного больше памяти, чемLinearLayout
Вам нужно добавить гравитацию к макету, а не к кнопке, гравитация в настройках кнопки предназначена для текста внутри кнопки
источник
Это решит вашу проблему
источник
Если вы не хотите или не можете использовать RelativeLayout, вы можете обернуть кнопку в LinearLayout с ориентацией «вертикальная» и шириной «fill_parent».
Это связано с тем, что если ориентация LinearLayout горизонтальная, гравитация будет влиять только на виды по вертикали. А если ориентация «вертикальная», гравитация будет влиять на виды только по горизонтали. См. Здесь для получения более подробной информации об ориентации / гравитации LinearLayout.
источник
Просто добавьте android: gravity = "right" в эту строку родительского макета, это будет работать.
источник
Я использовал аналогичную раскладку с 4
TextView
с. ДваTextView
s должны быть выровнены по левому краю, а дваTextView
должны быть выровнены по правой стороне. Итак, вот мое решение, если вы хотите использовать егоLinearLayouts
самостоятельно.источник
Вы можете использовать RelativeLayout или установить gravity = "right" в родительском макете вашего Button.
источник
Я знаю, что это старый, но вот еще один в линейном макете:
Обратите внимание на layout_gravity, а не только на гравитацию.
источник
center_vertical|bottom|top
? Мне они кажутся исключительными гравитациями выравнивания.Вы должны использовать Relativelayout вместо Linearlayout в качестве основного макета. Если вы используете Relativelayout в качестве основного, тогда легко обрабатывайте кнопку с правой стороны, потому что относительный макет предоставляет нам alignParent right, left, top и bottom.
источник
Используйте ширину макета в кнопке, например android: layout_width = "75dp"
источник