0

Я задаюсь вопросом, почему то, что я пытаюсь выполнить не работаетRelativeLayout запас не работает внутри ListView

Относительный код макета:

<?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="wrap_content" 
      android:background="#649760" 
      android:layout_marginRight="30dp"> 

    <ImageView 
     android:layout_width="200dp" 
     android:layout_height="50dp" 
     android:background="#000000"/> 

</RelativeLayout> 

Как это выглядит на андроид студии предварительного просмотра:

Android studio preview. notice the white after the green

Обратите внимание на белый цвет справа на зеленый.

Я также добавил list_view.xml для того, чтобы удалить разделитель и контролировать цвет фона

<?xml version="1.0" encoding="utf-8"?> 
<ListView xmlns:android="http://schemas.android.com/apk/res/android" 
     android:layout_width="match_parent" 
     android:layout_height="wrap_content" 
     android:dividerHeight="0dp" 
     android:divider="@null" 
     android:background="#ffffff"> 
</ListView> 

но то, что я получаю (снимок экрана моего мобильного) является то, что зеленый захватывает все оставшаяся ширина.

Кстати я уже решил проблему, давая отступы для list_view.xml, но я не могу использовать такое решение, потому что у меня есть несколько представлений в списке, и не все из них должны получить этот вид маржи

Любая помощь будет очень цениться, и будут вознаграждены с пальцы вверх (-:

Screen capture, no white

ответ

2

ряды с использованием ListView AbsListView.LayoutParams, когда вы проверить документ: http://developer.android.com/reference/android/widget/AbsListView.LayoutParams.html

вы можете заметить, что они не являются доступными.

Так обходной путь, чтобы добавить еще один View поверх ваших клеток, это должно работать:

<?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"> 
    <RelativeLayout 
      android:layout_width="match_parent" 
      android:layout_height="wrap_content" 
      android:background="#649760" 
      android:layout_marginRight="30dp"> 

     <ImageView 
       android:layout_width="200dp" 
       android:layout_height="50dp" 
       android:background="#000000"/> 

    </RelativeLayout> 
</LinearLayout> 

Другим обходной путь, добавьте Вид справа от вашего «rootView»:

<?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="wrap_content" 
     android:background="#649760"> 

    <View 
      android:layout_width="30dp" 
      android:layout_height="50dp" 
      android:layout_alignParentRight="true" 
      android:background="@color/white"/> 

    <ImageView 
      android:layout_width="200dp" 
      android:layout_height="50dp" 
      android:background="#000000"/> 

</RelativeLayout> 

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

+0

Да, хорошо, ваше решение работает, и я уже реализовал его так (но вместо этого LinearLyaout я использовал Relative layout), но теперь у меня есть 2 вложенных макета в макете списка, и я думаю, что это перебор. мой вопрос был скорее из-за того, почему он не работает (-: – royB

+0

Ответ отредактирован, надеюсь, что он вам поможет. – Andros

+0

еще раз спасибо за ваш ответ (-: я не дал никаких полей/отступов в listView, только для просмотра relativeLayout поэтому я удивлен, что это не сработало – royB

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