2015-03-25 2 views
0

Я пытаюсь показать одну точку зрения на левой стороне и один на правой стороне родительского макета следующим образом:Не удается выровнять вид справа

<LinearLayout  
    android:layout_width="match_parent" 
    android:layout_height="match_parent" 
    android:orientation="horizontal"> 

    <TextView 
     android:layout_width="wrap_content" 
     android:layout_height="wrap_content" 
     android:text="left" 
     android:layout_gravity="left" /> 

    <TextView 
     android:layout_width="wrap_content" 
     android:layout_height="wrap_content" 
     android:text="right" 
     android:layout_gravity="right" /> 
</LinearLayout> 

Но в результате я вижу как TextViews выровненный только влево. Я не понимаю, почему. Мне удается установить вертикальный layout_gravity, но не горизонтальный. Кроме того, я мог бы добавить:

android:gravity="right" 

для родительского макета и чем видеть обе точки зрения на правой стороне, но не смог найти способ, чтобы отобразить один в левой стороне и один на правой стороне.
Пожалуйста, помогите.

+0

Использование для относительной компоновки – cyberlobe

+0

Вы пробовали использовать весы макета? – freddieptf

+0

Проблема с макетами макетов заключается в том, что они разделяют «LinearLayout» в фиксированном соотношении. Использование «RelativeLayout» кажется самым чистым решением, используя тот, который я предложил в своем ответе, был бы самым быстрым. – Lamorak

ответ

1

Еще одна хитрость здесь;

Место невидимое View между TextView s. И он будет занимать всю оставшуюся область с android:layout_weight="1", поэтому TextView s останется на обоих концах. Не требуется гравитации. Попробуйте использовать код ниже:

<LinearLayout 
    android:layout_width="match_parent" 
    android:layout_height="match_parent" 
    android:orientation="horizontal" > 

    <TextView 
     android:layout_width="wrap_content" 
     android:layout_height="wrap_content" 
     android:text="left" /> 

    <View 
     android:layout_width="0dp" 
     android:layout_height="wrap_content" 
     android:layout_weight="1" /> 

    <TextView 
     android:layout_width="wrap_content" 
     android:layout_height="wrap_content" 
     android:text="right" /> 
</LinearLayout> 
+0

Это лучшее решение для меня. Главным образом, потому что в моем реальном случае у меня есть фактически 3 вида, и мне нужно выровнять 1 влево и 2,3 вправо. и точка зрения владельца места - единственное, что может решить это. – GyRo

+0

Спасибо. Да, гравитационные решения сложнее, заполнитель просто для вашего дела. –

0

Использование RelativeLayout вместо

<RelativeLayout 
    android:layout_width="match_parent" 
    android:layout_height="match_parent"> 

    <TextView 
     android:layout_width="wrap_content" 
     android:layout_height="wrap_content" 
     android:layout_alignParentLeft="true" 
     android:text="left" /> 

    <TextView 
     android:layout_width="wrap_content" 
     android:layout_height="wrap_content" 
     android:layout_alignParentRight="true" 
     android:text="right" /> 

</RelativeLayout> 
1

Попробуйте это:

<LinearLayout 
     android:layout_width="match_parent" 
     android:layout_height="match_parent" 
     android:orientation="horizontal" > 

     <TextView 
      android:layout_width="0dip" 
      android:layout_height="wrap_content" 
      android:layout_weight="1" 
      android:gravity="left" 
      android:text="left" /> 

     <TextView 
      android:layout_width="0dip" 
      android:layout_height="wrap_content" 
      android:layout_weight="1" 
      android:gravity="right" 
      android:text="right" /> 
    </LinearLayout> 

Или попробуйте следующее

<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" 
    xmlns:tools="http://schemas.android.com/tools" 
    android:layout_width="match_parent" 
    android:layout_height="match_parent" 
    android:paddingBottom="@dimen/activity_vertical_margin" 
    android:paddingLeft="@dimen/activity_horizontal_margin" 
    android:paddingRight="@dimen/activity_horizontal_margin" 
    android:paddingTop="@dimen/activity_vertical_margin" 
    tools:context=".MainActivity" > 

    <TextView 
     android:layout_width="wrap_content" 
     android:layout_height="wrap_content" 
     android:layout_alignParentLeft="true" 
     android:text="left" /> 

    <TextView 
     android:layout_width="wrap_content" 
     android:layout_height="wrap_content" 
     android:layout_alignParentRight="true" 
     android:text="right" /> 

</RelativeLayout> 

Редактировать: В способе 1, использующем вес для разделения общего экрана в виде двух частей и установки силы тяжести для первого предмета, остается, а сила тяжести для второго элемента является правильной. Я не использую андроид: layout_gravity для TextView. Использование андроида: гравитация. Лучшая практика вы можете использовать relativeLayout. Проверьте второй вариант

0
<?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:weightSum="100" 
    android:orientation="horizontal"> 

    <TextView 
     android:layout_weight="50" 
     android:layout_width="0dp" 
     android:layout_height="wrap_content" 
     android:text="left" 
     android:gravity="left" /> 

    <TextView 
     android:layout_weight="50" 
     android:layout_width="0dp" 
     android:layout_height="wrap_content" 
     android:text="right" 
     android:gravity="right" /> 
</LinearLayout> 
0

попробовать это:

<?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:baselineAligned="false" 
android:orientation="horizontal" > 

<LinearLayout 
    android:layout_width="match_parent" 
    android:layout_height="match_parent" 
    android:layout_weight="1" 
    android:gravity="left" > 

    <TextView 
     android:layout_width="wrap_content" 
     android:layout_height="wrap_content" 
     android:text="left" /> 
</LinearLayout> 

<LinearLayout 
    android:layout_width="match_parent" 
    android:layout_height="match_parent" 
    android:layout_weight="1" 
    android:gravity="right" > 

    <TextView 
     android:layout_width="wrap_content" 
     android:layout_height="wrap_content" 
     android:text="right" /> 
</LinearLayout> 

</LinearLayout> 
+0

Кто-нибудь, пожалуйста, объясните, что не так с этим кодом? Специально, кто проголосовал за это. –

+0

Хотя это рабочее решение, это, вероятно, самый худший способ решить проблему, потому что он вводит ненужное вложение макетов. Сделайте это, только если вы хотите, чтобы ваше приложение было наименее эффективным. – 2Dee

0

Самое простое решение с LinearLayout модифицирует правой TextView с gravity="right"

<TextView 
    android:layout_width="match_parent" 
    android:layout_height="wrap_content" 
    android:text="right" 
    android:gravity="right" /> 

Но я бы настоятельно рекомендовал, используя RelativeLayout, как @ - предложил Сид.

1

Вы можете попробовать это, а

<LinearLayout 
    android:layout_width="match_parent" 
    android:orientation="horizontal" 
    android:layout_height="match_parent"> 

    <TextView 
     android:layout_width="0dp" 
     android:layout_height="wrap_content" 
     android:layout_weight="1" 
     android:gravity="left" 
     android:text="left" /> 

    <TextView 
     android:layout_width="0dp" 
     android:layout_height="wrap_content" 
     android:layout_weight="1" 
     android:gravity="right" 
     android:text="right" /> 

</LinearLayout> 
Смежные вопросы