2016-06-02 3 views
0

Я работаю над пользовательским списком, и каждая строка использует 2 изображения в качестве фона. Все работает отлично, за исключением того, что остается пустое пространство между каждым элементом. Вот мой код:Удалить пустое пространство ListView Android

Сначала мой list_row.xml. Обратите внимание, что 2 изображения - это изображение и темное наложение, которые делают первое изображение темнее, а текст намного легче читать. Они выступают в качестве фона для каждой строки.

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

<!-- BG Image --> 
<ImageView 
    android:id="@+id/image_bg" 
    android:layout_width="wrap_content" 
    android:layout_height="wrap_content" 
    android:layout_alignParentEnd="true" 
    android:layout_alignParentTop="true"/> 

<!-- Dark Overlay for BG Image --> 
<ImageView 
    android:id="@+id/image_bg_over" 
    android:layout_width="wrap_content" 
    android:layout_height="wrap_content" 
    android:layout_alignParentEnd="true" 
    android:layout_alignParentTop="true" /> 

<TextView 
    android:id="@+id/filler" 
    android:layout_width="wrap_content" 
    android:layout_height="40dp" 
    android:layout_centerHorizontal="true" /> 

<!-- Bar Name --> 
<TextView 
    android:id="@+id/barname" 
    android:layout_width="wrap_content" 
    android:layout_height="wrap_content" 
    android:layout_centerHorizontal="true" 
    android:layout_below="@id/filler" 
    android:textSize="@dimen/title" 
    android:textStyle="bold" 
    android:textColor="@color/list_text_color"/> 

<!-- Address --> 
<TextView 
    android:id="@+id/address" 
    android:layout_width="fill_parent" 
    android:layout_height="wrap_content" 
    android:layout_below="@id/barname" 
    android:gravity="center" 
    android:layout_marginTop="1dip" 
    android:textColor="@color/list_text_color" 
    android:textSize="@dimen/rating"/> 

<!-- Text CheckIn/CheckOut --> 
<TextView 
    android:id="@+id/check" 
    android:layout_width="120dp" 
    android:layout_height="wrap_content" 
    android:layout_below="@+id/address" 
    android:layout_marginTop="10dp" 
    android:layout_centerHorizontal="true" 
    android:textColor="@color/list_text_color" 
    android:textSize="@dimen/genre"/> 

<!-- Image CheckIn/CheckOut --> 
<ImageView 
    android:id="@+id/checkImg" 
    android:layout_width="40dp" 
    android:layout_height="40dp" 
    android:layout_marginTop="10dp" 
    android:layout_below="@+id/address" 
    android:gravity="right" 
    android:layout_toRightOf="@+id/check" 
    android:adjustViewBounds="true" /> 


</RelativeLayout> 

Тогда мой адаптер:

public View getView(int position, View convertView, ViewGroup parent) { 
    if (inflater == null) 
     inflater = (LayoutInflater) activity 
       .getSystemService(Context.LAYOUT_INFLATER_SERVICE); 
    if (convertView == null) 
     convertView = inflater.inflate(R.layout.list_row, null); 

    ImageView bgImg = (ImageView) convertView.findViewById(R.id.image_bg); 
    ImageView bgImgOver = (ImageView) convertView.findViewById(R.id.image_bg_over); 

    TextView barname = (TextView) convertView.findViewById(R.id.barname); 
    TextView address = (TextView) convertView.findViewById(R.id.address); 
    ImageView checkImg = (ImageView) convertView.findViewById(R.id.checkImg); 
    TextView check = (TextView) convertView.findViewById(R.id.check); 

    Bar m = barItems.get(position); 

    bgImg.setImageResource(R.drawable.bg_default); 
    bgImgOver.setImageResource(R.drawable.bg_darkover); 

    barname.setText(m.getPlaceName()); 
    address.setText(m.getAddress()); 
    check.setText("Check-In"); 
    checkImg.setImageResource(R.drawable.ic_checkin); 

    return convertView; 
} 

XML-фрагмента:

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

<ListView 
    android:id="@+id/places_list" 
    android:layout_width="match_parent" 
    android:layout_height="match_parent"/> 

</RelativeLayout> 

onViewCreated метод фрагмента, в котором я создаю ListView:

@Override 
public void onViewCreated(View view, Bundle savedInstanceState) { //Otherwise can't use findViewById 
    listView = (ListView) getView().findViewById(R.id.list); 
    adapter = new CustomListAdapter(getActivity(), barList); 
    listView.setAdapter(adapter); 

    Bar bar1 = new Bar(); 
    bar1.setPlaceName("place1"); 
    bar1.setAddress("Addr1"); 
    barList.add(bar1); 
    Bar bar2 = new Bar(); 
    bar2.setPlaceName("place2"); 
    bar2.setAddress("Addr2"); 
    barList.add(bar2); 
    Bar bar3 = new Bar(); 
    bar3.setPlaceName("place3"); 
    bar3.setAddress("Addr3"); 
    barList.add(bar3); 
    adapter.notifyDataSetChanged(); 

    listView.setDivider(null); 
    listView.setDividerHeight(0); 
} 

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

Я думаю, что я ошибся в относительной компоновке, которая создает это пространство, но я не могу найти, где любая помощь оценивается!

+0

опубликовать ListView XML –

+1

Возможный дубликат [Android Listview удалить любое пространство между элементами] (http://stackoverflow.com/questions/24372535/android-listview-remove-any-space-between-items) – Ironman

+0

Ред добавьте мой фрагмент xml. Я не думаю, что это дубликат. Я проверил его раньше, и они указали на использование 'listView.setDivider (null); listView.setDividerHeight (0); 'но это не устранило проблему –

ответ

1
<!-- BG Image --> 
<ImageView 
    android:id="@+id/image_bg" 
    android:layout_width="match_parent" 
    android:layout_height="match_parent" 
    android:scaleType="fitXY" 
    android:layout_alignParentEnd="true" 
    android:layout_alignParentTop="true"/> 

же варианты <!-- Dark Overlay for BG Image -->

и для верхнего элемента RelativeLayout заданной фиксированной высоте;

+0

Это сделало трюк. Однако что вы подразумеваете под установленной фиксированной высотой для относительной компоновки? обернуть содержимое путем переменной может привести к проблемам? Если это так, я устанавливаю фиксированную высоту со значением в dp? –

+0

coz android: scaleType = "fitXY" с android: layout_height = "wrap_content" в изображении нехорошо использовать coz wrap_content основы для реального размера изображения, но масштаб scaleXY - это масштаб, который подходит для всего пространства. Что бы ни было - вы должны немного поэкспериментировать) –

+0

Действительно, я играл с ним, и я исправил его в родительском, и все хорошо. Благодаря! –

0

Я думаю, что фоновое изображение не хватает высоты, добавьте этот атрибут 2, чтобы фоновое изображение и посмотреть

android:scaleType="centerCrop" 
Смежные вопросы