Android Listview Rows采用全屏显示

时间:2014-02-03 11:23:14

标签: android listview

在我的程序中,我正在使用通用图像加载器。在我的列表视图中,行大小占据了我搜索过的所有屏幕,但我找不到导致它的原因所以这里是我的适配器

public class DynamicListView extends BaseAdapter {

ImageLoader imageLoader;
Context c;
String[] images= {"http://3.bp.blogspot.com/-Gsj-34Iyiio/ULEiyinE28I/AAAAAAAADPg/ISUQwGzSBMs/s1600/twitter.png",
        "http://a1.mzstatic.com/us/r30/Purple6/v4/99/ee/8e/99ee8e01-f089-d549-f571-1a3797ec660d/icon_256.png" ,
"http://www.wallsave.com/wallpapers/1920x1080/forces-of-nature/1526282/forces-of-nature-1526282.jpg"};
String baslik="Bslik bla bla bla bla bla";
String icerik="Icerik bla bla bla bla bla";
ArrayList<ListViews> lists = new ArrayList<ListViews>();

DynamicListView(Context c )
{
    this.c = c;
  imageLoader = ImageLoader.getInstance();

    for(int i= 0 ; i < 3 ; i++)
    {
        lists.add( new ListViews(images[i],baslik,icerik));
    }
}

@Override
public int getCount() {
    return lists.size();
}

@Override
public Object getItem(int position) {
    return lists.get(position);
}

@Override
public long getItemId(int position) {
    return position;
}

@Override
public View getView(int position, View convertView, ViewGroup parent) {
    View row = convertView;
    myViewHolder holder = null;
    if(row==null)
    {
        LayoutInflater inflate = (LayoutInflater) c.getSystemService(c.LAYOUT_INFLATER_SERVICE);//Butun layout u inflate'in icine aldik
        row = inflate.inflate(R.layout.dynamic_lists , parent , false ); //gerekli islemler
        holder = new myViewHolder(row);
        row.setTag(holder);
    }
    else
    {
        holder = (myViewHolder) row.getTag();
    }

    imageLoader.displayImage(lists.get(position).image,holder.image );
    holder.baslik.setText(lists.get(position).baslik);
    holder.icerik.setText(lists.get(position).icerik);

    return row;
}



class myViewHolder
{
    private ImageView image;
    private TextView baslik;
    private TextView icerik;
    myViewHolder(View v)
    {
        this.image = (ImageView) v.findViewById(R.id.ivDynamic);
        this.baslik = (TextView) v.findViewById(R.id.tvDynamic1);
        this.icerik = (TextView) v.findViewById(R.id.tvDynamic2);
    }
}


class ListViews
{
    ListViews(String image, String baslik, String icerik)
    {
        this.baslik = baslik;
        this.icerik = icerik;
        this.image = image;
    }
    String image;
    String baslik;
    String icerik;
  }
}

这是我在getView方法中使用的单行

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

<ImageView
    android:layout_width="75dp"
    android:layout_height="75dp"
    android:id="@+id/ivDynamic"
    android:background="#FFFFFF"
    android:layout_alignParentTop="true"
    android:layout_alignParentLeft="true" />

<TextView
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:textAppearance="?android:attr/textAppearanceLarge"
    android:textColor="#000000"
    android:text="Baslik bla bla"
    android:id="@+id/tvDynamic1"
    android:layout_alignParentTop="true"
    android:layout_toRightOf="@+id/ivDynamic"
    android:paddingLeft="10dp"
    android:layout_alignParentRight="true" />

<TextView
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:textAppearance="?android:attr/textAppearanceSmall"
    android:textColor="#000000"
    android:text="Icerik bla bla bla"
    android:id="@+id/tvDynamic2"
    android:layout_alignBottom="@+id/ivDynamic"
    android:layout_toRightOf="@+id/ivDynamic"
    android:layout_below="@+id/tvDynamic1"
    android:paddingLeft="7dp"
    android:layout_alignParentRight="true" />
</RelativeLayout>

任何帮助都将不胜感激。

5 个答案:

答案 0 :(得分:5)

在RelativeLayout中设置android:layout_height="Wrap_content"

所以做这样的事情。

<RelativeLayout
android:layout_width="fill_parent"
android:layout_height="Wrap_content"
xmlns:android="http://schemas.android.com/apk/res/android"
android:background="@drawable/background">  // You need to set proper size `background` image here  

修改: 现在指出你的 android:background="@drawable/background" 可能有大尺寸。 所以请检查background图片然后尝试。它可能会填满屏幕,因为您的background图片尺寸大于屏幕尺寸。您需要在drawable中设置合适尺寸的background图片。

答案 1 :(得分:1)

这是由于您对行的定义:

<RelativeLayout
...
android:layout_height="fill_parent"

btw fill_parent已弃用,请改为使用match_parent。 fill_parent表示它应该填满所有可用的屏幕,因此您可能应该使用wrap_contents

重新填充它

答案 2 :(得分:1)

更改相对布局

android:layout_width="wrap_content"
android:layout_height="wrap_content"

由于

答案 3 :(得分:0)

从RelativeLayout中删除fillParent选项..

答案 4 :(得分:0)

您必须使用wrap_content创建列表行高。

喜欢这个

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