列表视图中的项目看起来不像我的项目布局

时间:2016-09-03 16:46:27

标签: android android-layout listview

我正在为一个新闻网站构建一个应用程序,我为每个项目创建了一个ListView和一个布局,它有相当多的空白区域,但是在列表中查看了所有的空白区域已移除。 这就是我的意思:http://imgur.com/a/mLuuE 这是一个项目布局:

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:orientation="vertical"
    android:layout_width="match_parent"
    android:layout_height="175dp"
    android:gravity="center"
    android:layout_weight="0"
    android:id="@+id/article_layout"
    android:background="@drawable/gradientdemo">

    <LinearLayout
        android:layout_width="match_parent"
        android:layout_height="0dp"
        android:layout_weight="1"
        android:gravity="center|bottom"
        android:orientation="vertical"
        android:paddingLeft="16dp">

        <TextView
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:textStyle="bold"
            android:text="Titolo dell'articolo"
            android:textSize="@dimen/abc_text_size_headline_material"
            android:layout_gravity="left"
            android:id="@+id/article_title" />

        <TextView
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_marginBottom="8dp"
            android:text="3/9/16 - Autore"
            android:layout_gravity="left"
            android:id="@+id/article_info" />
    </LinearLayout>
</LinearLayout>

这是我的自定义适配器:

public class ArticleAdapter extends ArrayAdapter<Article> {

    public ArticleAdapter(Context context, int textViewResourceId){
        super(context, textViewResourceId);
    }

    public ArticleAdapter(Context context, int resource, List<Article> items ){
        super(context, resource, items);
    }

    @Override
    public View getView(int position, View convertView, ViewGroup parent){
        View v = convertView;
        if (v == null) {
            LayoutInflater vi;
            vi = LayoutInflater.from(getContext());
            v = vi.inflate(R.layout.article_item, null);
        }

        Article article = (Article) getItem(position);

        TextView title = (TextView) v.findViewById(R.id.article_title);
        TextView info  = (TextView) v.findViewById(R.id.article_info);

        if( title != null ) {
            title.setText( article.getTitle() );
        }
        if( info != null ) {
            info.setText( article.getAuthor() );
        }

        return v;
    }
}

希望它具有可读性,我是Android开发的新手。

4 个答案:

答案 0 :(得分:1)

你的手机LineaerLayout:

android:layout_height="0dp"
android:layout_weight="1"

更改为:

android:layout_height="wrap_content"

您不需要layout_weight

答案 1 :(得分:0)

删除(defn fixing "A version of fix that fits better with the unified update model: instead of multiple clauses, additional args to the transform function are permitted. For example, (swap! my-atom fixing map? update-in [k] inc)" [x pred transform & args] (if ((as-fn pred) x) (apply (as-fn transform) x args) x)) 并添加正确的高度,例如android:layout_weight="1"

android:layout_height="60dp"

答案 2 :(得分:0)

在linearLayout中使用wrapcontent,擦除layout_weigth并添加weigthsum = 1

然后在textViews中将高度更改为0dp并添加到每个layout_weight = 0.5

我认为这会起作用

答案 3 :(得分:0)

我通过在适配器中更改此行来修复此问题

v = vi.inflate(R.layout.article_item, null); 

到这一个:
    v = vi.inflate(R.layout.article_item,parent,false);