2016-03-18 1 views
0

Вот что у меня есть:Выравнивание двух TextViews в ListView

enter image description here

Есть варианты и есть содержание каждого варианта. Номера параметров (A, B, C, D) находятся в отдельном текстовом представлении, а их содержимое находится в отдельном текстовом виде.

Все, что я пытаюсь, заключается в выравнивании номера параметра с первой строкой содержимого опции. Я попытался установить константу paddingTop, но по мере того, как количество строк в изменениях параметров-вариантов изменяется, оно выходит из строя. Любые предложения о том, как это сделать?

Вот часть XML:

<LinearLayout 
    xmlns:android="http://schemas.android.com/apk/res/android" 
    android:id="@+id/options" 
    android:orientation="horizontal" 
    android:layout_width="match_parent" 
    android:layout_height="match_parent" 
    android:padding="8dp"> 

    <TextView 
     android:id="@+id/option_number" 
     android:layout_width="0dp" 
     android:layout_height="match_parent" 
     android:layout_weight="10" 
     android:text="A" 
     android:paddingLeft="5dp" 
     android:textSize="17sp" 
     android:textStyle="bold" 
     android:textColor="@color/charcoal"/> 



    <TextView 
     android:id="@+id/option_content" 
     android:layout_width="0dp" 
     android:layout_height="match_parent" 
     android:layout_weight="100" 
     android:textSize="17sp" 
     android:gravity="center|left" 
     android:paddingRight="20dp" 
     android:text="option content...." 
     android:textColor="@color/charcoal"/> 

Могу ли я сделать это, получая paddingTop контента опции динамически и установив тот же отступ в номер опции?

ответ

1

Попробовать ниже.

Замените это в своем xml.

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" 
     android:id="@+id/options" 
     android:layout_width="match_parent" 
     android:layout_height="match_parent" 
     android:orientation="horizontal" 
     android:weightSum="5"> 

     <TextView 
      android:id="@+id/option_number" 
      android:layout_width="0dp" 
      android:layout_height="wrap_content" 
      android:layout_weight="1" 
      android:paddingLeft="5dp" 
      android:text="A" 
      android:maxLines="4" 
      android:textColor="@color/charcoal" 
      android:textSize="17sp" 
      android:textStyle="bold" /> 


     <TextView 
      android:id="@+id/option_content" 
      android:layout_width="0dp" 
      android:layout_height="wrap_content" 
      android:layout_weight="4" 
      android:maxLines="4" 
      android:text="option content...." 
      android:textColor="@color/charcoal" 
      android:textSize="17sp" /> 

    </LinearLayout> 

И это делается.

Несомненно, это поможет вам.

+0

. Спасибо, ответ достаточно близко. Но всякий раз, когда имеется несколько строк, номер опции немного ниже, чем содержимое опции. Любые предложения? –

+0

@ user5038993 Можно ли показать мне экран, насколько он показывает ниже, в то время как несколько строк. Bcz в моем макете я попробовал, чтобы он не показывал бит ниже даже с несколькими строками. –

+0

@ user5038993 Получили ли вы его решение? –

0

установка android:layout_alignBaseline="@id/option_number" на option_content

+0

Спасибо за ответ, но можем ли мы использовать его с 'LinearLayout'? –

+0

Мой плохой. Из кода, который я вижу, вы должны быть в состоянии изменить на relativelayout, хотя :) – Joakim

+0

Ну, у меня есть «ImageView» тоже по линии. Все они распределены в пропорциях с помощью 'layout_weight'. Если у меня будет относительная ориентация пользователя, я не смогу это использовать. –

0

Try Вы можете использовать относительный макет вместо линейной компоновки, но вы WLL должны изменить ваш XML немного. Поэтому, если вы решите использовать его, вы можете просто установить следующее свойство для первого TextView

android:layout_alignTop="@+id/option_content" 

Это должно вам помочь.

+0

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

+0

@ user5038993 Если вам действительно нужно использовать только LinearLayout, укажите это в своем вопросе, чтобы люди не отправляли ответы, которые решают ваш заявленный вопрос, но не являются тем, вы на самом деле ищете. –

1

Set android: gravity = "top" для option_number TextView android: gravity = "top | left" для option_content. Или, User a Relative Layout и использовать layout_aligntop

+0

Невозможно загрузить верхнюю гравитацию для содержимого опций. Он должен плавать посередине. –

+0

В этом случае используйте относительный макет. используйте layout_gravity как «center | left» для содержимого опциона и используйте layout_alignTop = «@ id/option_content» для номера опции –

+0

в порядке, но опять же, я не смогу использовать атрибут layout_weight. –

0

использование: android:layout_centerVertical="true".

Предложение, можно использовать следующие три в сочетании с легко добиться того, что вы хотите:
1) CenterVertical
2) ToRightOf
3) RelativeLayout.

например:

<RelativeLayout 
    xmlns:android="http://schemas.android.com/apk/res/android" 
    android:id="@+id/options" 
    android:layout_width="match_parent" 
    android:layout_height="80dp"> 

    <TextView 
     android:layout_centerVertical="true" 

     android:id="@+id/option_number" 
     android:layout_width="30dp" 
     android:layout_height="wrap_content" 
     android:text="A" 
     android:paddingLeft="5dp" 
     android:textSize="17sp" 
     android:textStyle="bold" 
     android:textColor="@color/charcoal"/> 

    <TextView 
     android:layout_toRightOf="@id/option_number" 
     android:layout_centerVertical="true" 

     android:id="@+id/option_content" 
     android:layout_width="wrap_content" 
     android:layout_height="wrap_content" 
     android:textSize="17sp" 
     android:text="option content...." 
     android:textColor="@color/charcoal"/> 
+0

как насчет 'layout_weight'? –

+0

Я не понимаю, почему вам нужно использовать «layout_weight» здесь, если вы используете RelativeLayout. Вы можете просто установить '' @ id/option_content'' '' toRightOf'' '' @ id/option_number''. (и используйте фиксированную ширину для '' @ id/option_number'') –

+0

О, извините, это будет центрировать оба текстовых изображения по вертикали в списке, что будет выглядеть красиво. Если вы хотите, чтобы первое текстовое поле выравнивалось с первой строкой text_ второго списка, тогда в вашем первом текстовом комментарии добавьте '' "android: alignTop =" @ id/option_content "' '. И во втором текстовом поле удалите «toRightOf» и вместо этого просто добавьте '' layout_marginLeft'' –

 Смежные вопросы

  • Нет связанных вопросов^_^