2015-07-30 2 views
0

У меня есть следующий макет XML для моего ListView:пользовательских ListView Компоновка с несколькими ImageViews и TextViews

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

    <ImageView 
     android:id="@+id/imageView1" 
     android:layout_gravity="center" 
     android:layout_width="48dp" 
     android:layout_height="48dp" 
     android:src="@drawable/image"/> 

    <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" 
     android:layout_width="wrap_content" 
     android:layout_height="wrap_content" 
     android:orientation="vertical" > 

     <TextView 
      android:id="@+id/textView1" 
      android:layout_gravity="left" 
      android:layout_width="wrap_content" 
      android:layout_height="wrap_content" 
      android:textSize="18sp" 
      android:text="Hello"/> 

     <TextView 
      android:id="@+id/textView2" 
      android:layout_gravity="left" 
      android:layout_width="wrap_content" 
      android:layout_height="wrap_content" 
      android:textSize="14sp" 
      android:text="Hello"/> 
    </LinearLayout> 

    <ImageView 
     android:id="@+id/imageView2" 
     android:layout_gravity="center" 
     android:layout_width="48dp" 
     android:layout_height="48dp" 
     android:src="@drawable/image"/> 

</LinearLayout> 

Это то, что я хочу достичь с помощью этого XML-кода (Пустые коробки на левом/правом являются изображения): What I want

до сих пор, это то, что мой код выше делает: Current

Я хочу второе изображение появится на правой стороне большей части представления, и он похож на свою пихту пример.

EDIT:

я решил мою проблему и мой последний рабочий код:

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

    <ImageView 
     android:id="@+id/imageView1" 
     android:layout_gravity="center" 
     android:layout_width="48dp" 
     android:layout_height="48dp" /> 

    <LinearLayout 
     android:layout_width="0dp" 
     android:layout_weight="1" 
     android:layout_height="wrap_content" 
     android:orientation="vertical" > 

     <TextView 
      android:id="@+id/textView1" 
      android:layout_gravity="left" 
      android:layout_width="wrap_content" 
      android:layout_height="wrap_content" 
      android:textSize="18sp" 
      android:text="Hello"/> 

     <TextView 
      android:id="@+id/textView2" 
      android:layout_gravity="left" 
      android:layout_width="wrap_content" 
      android:layout_height="wrap_content" 
      android:textSize="14sp" 
      android:text="Hello"/> 
    </LinearLayout> 

    <LinearLayout 
     android:layout_width="wrap_content" 
     android:layout_height="wrap_content" 
     android:orientation="vertical" > 

     <TextView 
      android:id="@+id/textView3" 
      android:layout_gravity="center" 
      android:layout_width="wrap_content" 
      android:layout_height="wrap_content" 
      android:textSize="18sp" 
      android:text="Hello"/> 

     <TextView 
      android:id="@+id/textView4" 
      android:layout_gravity="center" 
      android:layout_width="wrap_content" 
      android:layout_height="wrap_content" 
      android:textSize="14sp" 
      android:text="Hello"/> 
    </LinearLayout> 

    <ImageView 
     android:id="@+id/imageView2" 
     android:layout_gravity="center" 
     android:layout_width="48dp" 
     android:layout_height="48dp" 
     android:src="@drawable/image"/> 

</LinearLayout> 

ответ

1

Вы можете использовать атрибут android:layout_weight

Оба ImageView будут иметь ширину 48dp и остальное пространство будет разделено поровну между двумя LinearLayouts. Точно как на вашей фотографии. Вы можете выровнять текст прямо во втором LinearLayout.

<ImageView 
    android:id="@+id/imageView1" 
    android:layout_gravity="center" 
    android:layout_width="48dp" 
    android:layout_height="48dp" 
    android:src="@drawable/image"/> 

<LinearLayout 
    android:layout_width="0dp" 
    android:layout_weight="1" 
    android:layout_height="wrap_content" 
    android:orientation="vertical" > 

    <TextView 
     android:id="@+id/textView1" 
     android:layout_gravity="left" 
     android:layout_width="wrap_content" 
     android:layout_height="wrap_content" 
     android:textSize="18sp" 
     android:text="Hello"/> 

    <TextView 
     android:id="@+id/textView2" 
     android:layout_gravity="left" 
     android:layout_width="wrap_content" 
     android:layout_height="wrap_content" 
     android:textSize="14sp" 
     android:text="Hello"/> 
</LinearLayout> 

<LinearLayout 
    android:layout_width="0dp" 
    android:layout_weight="1" 
    android:layout_height="wrap_content" 
    android:orientation="vertical" > 

    <TextView 
     android:id="@+id/textView3" 
     android:layout_gravity="left" 
     android:layout_width="wrap_content" 
     android:layout_height="wrap_content" 
     android:textSize="18sp" 
     android:text="Hello"/> 

    <TextView 
     android:id="@+id/textView4" 
     android:layout_gravity="left" 
     android:layout_width="wrap_content" 
     android:layout_height="wrap_content" 
     android:textSize="14sp" 
     android:text="Hello"/> 
</LinearLayout> 

<ImageView 
    android:id="@+id/imageView2" 
    android:layout_gravity="center" 
    android:layout_width="48dp" 
    android:layout_height="48dp" 
    android:src="@drawable/image"/> 

+0

Спасибо! Этот ответ дал мне то, что я хотел. – Octocat

+0

Одна вещь, для второго 'LinearLayout', я сохранил ее как:' android: layout_width = "wrap_content" ' – Octocat

+0

@Solstice, которую вы можете сохранить, как вам подходит, но как только вы сможете попытаться ознакомиться с layout_weight. layout_weight = 1 означает все оставшееся пространство. Если два вида имеют layout_weight = 1, это означает, что нужно оставить оставшееся пространство и дать половину половины для обоих. – Sharj

0

Можете ли вы сделать ширину и высоту внутреннего LinearLayout к wrap_content, как это.

<LinearLayout 
     android:layout_width="wrap_content" 
     android:layout_height="wrap_content" 
     android:orientation="vertical" > 

     <TextView 
      android:id="@+id/textView1" 
      android:layout_gravity="left" 
      android:layout_width="wrap_content" 
      android:layout_height="wrap_content" 
      android:textSize="18sp" 
      android:text="Hello"/> 

     <TextView 
      android:id="@+id/textView2" 
      android:layout_gravity="left" 
      android:layout_width="wrap_content" 
      android:layout_height="wrap_content" 
      android:textSize="14sp" 
      android:text="Hello"/> 
    </LinearLayout> 
+0

К сожалению, я просто редактировал свой вопрос еще раз. Я сделал это, и появится второе изображение, но оно не выровнено по правой стороне экрана.Смотрите мое второе прикрепленное изображение. – Octocat

0

В таком случае, вы должны использовать framelayout. Я не буду давать вам прямой код, потому что он не нужен. Используйте этот шаг:

Используйте framelayout как ваш контейнер. В режиме framelayout используйте три другие макеты, такие как framelayout или линейный макет. добавить гравитацию им, как указано ниже:

1. android:layout_gravity="center_vertical|left" 
2. android:layout_gravity="center_vertical|center_horizontal" 
3. android:layout_gravity="center_vertical|right" 
0

вы можете проверить этот код. измените значение свойства layout_weight в соответствии с вашим размером изображения.

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

    <ImageView 
     android:id="@+id/imageView1" 
     android:layout_gravity="center" 
     android:layout_width="48dp" 
     android:layout_height="48dp" 
     android:layout_weight="0.15" 
     android:src="@drawable/image"/> 

    <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" 
     android:layout_width="wrap_content" 
     android:layout_height="match_parent" 
     android:orientation="vertical" 
     android:layout_weight="0.70"> 

     <TextView 
      android:id="@+id/textView1" 
      android:layout_gravity="left" 
      android:layout_width="wrap_content" 
      android:layout_height="wrap_content" 
      android:textSize="18sp" 
      android:text="Hello"/> 

     <TextView 
      android:id="@+id/textView2" 
      android:layout_gravity="left" 
      android:layout_width="wrap_content" 
      android:layout_height="wrap_content" 
      android:textSize="14sp" 
      android:text="Hello"/> 
    </LinearLayout> 

    <ImageView 
     android:id="@+id/imageView2" 
     android:layout_weight="0.15" 
     android:layout_gravity="center" 
     android:layout_width="48dp" 
     android:layout_height="48dp" 
     android:src="@drawable/image"/> 

</LinearLayout> 
0

Сделать использование относительного расположения следующим образом:

<?xml version="1.0" encoding="utf-8"?> 
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" 
    android:layout_width="match_parent" 
    android:layout_height="match_parent" 
    > 

    <ImageView 
     android:id="@+id/imageView1" 
     android:layout_gravity="center" 
     android:layout_width="48dp" 
     android:layout_height="48dp" 
     android:src="@drawable/image" 
     android:layout_alignParentLeft="true" 
     /> 

    <RelativeLayout 
     android:layout_width="wrap_content" 
     android:layout_height="wrap_content" 
     android:orientation="vertical" 
     android:layout_toRightOf="@id/imageView1" > 

     <TextView 
      android:id="@+id/textView1" 
      android:layout_gravity="left" 
      android:layout_width="wrap_content" 
      android:layout_height="wrap_content" 
      android:textSize="18sp" 
      android:text="Hello" 
      android:layout_alignParentTop="true" 
      android:layout_alignParentLeft="true"> 

     </TextView> 
     <TextView 
      android:id="@+id/textView2" 

      android:layout_width="wrap_content" 
      android:layout_height="wrap_content" 
      android:textSize="14sp" 
      android:text="Hello" 
      android:layout_alignParentBottom="true" 
      android:layout_alignParentLeft="true"/> 
     <TextView 
      android:id="@+id/textView3" 

      android:layout_width="wrap_content" 
      android:layout_height="wrap_content" 
      android:textSize="18sp" 
      android:text="Hello" 
      android:layout_alignParentTop="true" 
      android:layout_alignParentRight="true"> 

     </TextView> 
     <TextView 
      android:id="@+id/textView4" 

      android:layout_width="wrap_content" 
      android:layout_height="wrap_content" 
      android:textSize="14sp" 
      android:text="Hello" 
      android:layout_alignParentBottom="true" 
      android:layout_alignParentRight="true"/> 
    </RelativeLayout> 

    <ImageView 
     android:id="@+id/imageView4" 
     android:layout_gravity="center" 
     android:layout_width="48dp" 
     android:layout_height="48dp" 
     android:src="@drawable/image" 
     android:layout_alignParentRight="true"/> 

</RelativeLayout> 
0

Используйте относительную раскладку для большей гибкости и обновить текущую раскладку с ниже код: -

<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" 
android:layout_width="match_parent" 
android:layout_height="match_parent" 
> 

<ImageView 
    android:id="@+id/imageView1" 
    android:scaleType="centerCrop" 
    android:layout_width="48dp" 
    android:layout_height="48dp" 
    android:src="@drawable/image"/> 

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" 
    android:layout_width="wrap_content" 
    android:layout_height="wrap_content" 
    android:orientation="vertical" 
    android:layout_marginLeft="20dp" 
    android:layout_toRightOf="@+id/imageView1"> 

    <TextView 
     android:id="@+id/textView1" 
     android:layout_gravity="left" 
     android:layout_width="wrap_content" 
     android:layout_height="wrap_content" 
     android:textSize="18sp" 
     android:text="Hello"/> 

    <TextView 
     android:id="@+id/textView2" 
     android:layout_gravity="left" 
     android:layout_width="wrap_content" 
     android:layout_height="wrap_content" 
     android:textSize="14sp" 
     android:layout_marginTop="10dp" 
     android:text="Hello"/> 
</LinearLayout> 

<ImageView 
    android:id="@+id/imageView2" 
    android:scaleType="centerCrop" 
    android:layout_width="48dp" 
    android:layout_height="48dp" 
    android:layout_alignParentRight="true" 
    android:src="@drawable/image"/> 

1

I подумайте, что вы должны использовать Relative Layout для этого, поскольку он охватывает широкий диапазон экрана различных devi цы.

OUTPUT

<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" 
android:layout_width="match_parent" 
android:layout_height="match_parent" 
android:orientation="horizontal" > 

    <ImageView 
    android:id="@+id/imageView1" 
    android:layout_gravity="center" 
    android:layout_width="48dp" 
    android:layout_height="48dp" 
    android:src="@drawable/image1" 
    android:layout_alignParentLeft="true"/> 

    <LinearLayout 
    android:id="@+id/l1" 
    android:layout_width="wrap_content" 
    android:layout_height="wrap_content" 
    android:orientation="vertical" 
    android:layout_toRightOf="@+id/imageView1" 
    android:layout_toEndOf="@+id/imageView1" > 

     <TextView 
     android:id="@+id/textView1" 
     android:layout_gravity="left" 
     android:layout_width="wrap_content" 
     android:layout_height="wrap_content" 
     android:textSize="18sp" 
     android:text="Hello"/> 

     <TextView 
     android:id="@+id/textView2" 
     android:layout_gravity="left" 
     android:layout_width="wrap_content" 
     android:layout_height="wrap_content" 
     android:textSize="14sp" 
     android:text="Hello"/> 
    </LinearLayout> 
    <LinearLayout 
    android:layout_width="wrap_content" 
    android:layout_height="wrap_content" 
    android:orientation="vertical" 
    android:layout_toLeftOf="@+id/imageView2" 
    android:layout_toStartOf="@+id/imageView2" > 

     <TextView 
     android:id="@+id/textView3" 
     android:layout_gravity="left" 
     android:layout_width="wrap_content" 
     android:layout_height="wrap_content" 
     android:textSize="18sp" 
     android:text="Hello"/> 

     <TextView 
     android:id="@+id/textView4" 
     android:layout_gravity="left" 
     android:layout_width="wrap_content" 
     android:layout_height="wrap_content" 
     android:textSize="14sp" 
     android:text="Hello"/> 
    </LinearLayout> 

    <ImageView 
    android:id="@+id/imageView2" 
    android:layout_gravity="center" 
    android:layout_width="48dp" 
    android:layout_height="48dp" 
    android:src="@drawable/image1" 
    android:layout_alignParentRight="true"/> 
</RelativeLayout> 
+0

Спасибо, я тоже попробую. – Octocat

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