2016-09-10 4 views
0

Я знаю, что это популярный вопрос, но все ответы, которые я нашел, либо не работают, либо нарушают мой макет. Я пишу макет для элемента listview, он должен просто быть текстовым слева и изображением справа, без проблем. Я пробовал использовать android: layout_gravity = "center_horizontal", но это ничего не меняет. Я также попытался изменить свой LinearLayout в RelativeLayout и использовать layout_centerVertical = "true", который центрируется по горизонтали, но изображения на строках с разной высотой немного больше других. Это мой код макета:Вертикальное центрирование изображения в relativelayout

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" 
    android:layout_width="match_parent" 
    android:layout_height="wrap_content" 
    android:minHeight="70dp" 
    android:paddingLeft="8dp" 
    android:paddingRight="8dp" 
    android:background="?android:attr/selectableItemBackground"> 
    <LinearLayout 
     android:layout_width="match_parent" 
     android:layout_height="wrap_content" 
     android:orientation="horizontal" 
     android:weightSum="3"> 
     <LinearLayout 
      android:layout_width="0dp" 
      android:layout_height="wrap_content" 
      android:orientation="vertical" 
      android:layout_weight="2" 
      android:paddingTop="8dp" 
      android:paddingLeft="8dp" 
      android:paddingRight="8dp"> 
      <TextView 
       android:layout_width="wrap_content" 
       android:layout_height="wrap_content" 
       android:textSize="18dp" 
       android:textColor="#000000" 
       android:text="Titolo di prova lorem ipsus dolor sit amet..." 
       android:id="@+id/article_title"/> 
      <TextView 
       android:layout_width="wrap_content" 
       android:layout_height="wrap_content" 
       android:text="Autore di prova" 
       android:id="@+id/article_info"/> 
      <TextView 
       android:layout_width="0dp" 
       android:layout_height="0dp" 
       android:visibility="invisible" 
       android:text="non dovresti poter vedere questa scritta..." 
       android:id="@+id/article_hiddenid"/> 
     </LinearLayout> 
<!-- Here's where it should be centered --> 
     <LinearLayout 
      android:layout_width="0dp" 
      android:layout_height="match_parent" 
      android:layout_weight="1" 
      android:padding="2dp" 
      android:orientation="vertical"> 
       <ImageView 
        android:layout_width="match_parent" 
        android:layout_height="70dp" 
        android:src="@drawable/demoimage2" 
        android:layout_gravity="center_horizontal" 
        android:id="@+id/article_image"/> 
     </LinearLayout> 
    </LinearLayout> 
</LinearLayout> 

редактировать: Вот как это выглядит imgur.com/a/3ZGrl. Если я использую RelativeLayout и layout_centerVertical, это выглядит следующим образом: imgur.com/a/vWrzH (некоторые изображения немного шире других)

ответ

0

Вы слишком много гнездяете LinearLayout без причины.

Во-первых, попробуйте установить ориентацию для родительского LinearLayout в горизонтальное положение. И удалите второй вложенный макет. Попробуйте это:

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" 
android:layout_width="match_parent" 
android:layout_height="wrap_content" 
android:paddingLeft="8dp" 
android:paddingRight="8dp" 
android:weightSum="3" 
android:orientation="horizontal" 
android:background="?android:attr/selectableItemBackground"> 

    <LinearLayout 
     android:layout_width="0dp" 
     android:layout_height="match_parent" 
     android:orientation="vertical" 
     android:layout_weight="2" 
     android:paddingTop="8dp" 
     android:paddingLeft="8dp" 
     android:paddingRight="8dp"> 
     <TextView 
      android:layout_width="wrap_content" 
      android:layout_height="wrap_content" 
      android:textSize="18dp" 
      android:textColor="#000000" 
      android:text="Titolo di prova lorem ipsus dolor sit amet..." 
      android:id="@+id/article_title"/> 
     <TextView 
      android:layout_width="wrap_content" 
      android:layout_height="wrap_content" 
      android:text="Autore di prova" 
      android:id="@+id/article_info"/> 

    </LinearLayout> 

    <LinearLayout 
     android:layout_width="0dp" 
     android:layout_height="match_parent" 
     android:layout_weight="1" 
     android:gravity="center" 
     android:padding="2dp" 
     android:orientation="vertical"> 
      <ImageView 
       android:layout_width="match_parent" 
       android:layout_height="match_parent" 
       android:src="@drawable/demoimage2" 
       android:id="@+id/article_image"/> 
    </LinearLayout> 
</LinearLayout> 
+0

Спасибо за уборку, но ничего не изменилось, это то же самое, как и раньше –

+0

могли бы вы поделиться изображение того, что выход и что вы ожидаете –

+0

http://imgur.com/a/ 3ZGrl так выглядит на моем телефоне. Вы можете видеть, что изображения справа не располагаются вертикально по новостям, у которых больше названия более трех строк. Если я использую RelativeLayout и layout_centerVertical, изображения центрируются, но они немного больше в новостях с более чем тремя строками заголовка. Это не много, но это странно. Http://imgur.com/a/vWrzH –

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