Android设置ListView行高取决于屏幕分辨率

时间:2011-12-05 01:27:02

标签: android android-layout

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

    <ImageView
        android:id="@+id/venueImage"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"/>

</LinearLayout>

我有一个普通的listview和一个自定义适配器,使用上面的xml作为行。

我只有3行,但我希望这3行具有相同的高度以适应屏幕分辨率的高度。目前我甚至不知道如何设置行的高度,因为设置LinearLayout的高度不会做任何事情。

1 个答案:

答案 0 :(得分:2)

您可以设置ImageView的高度以获得所需内容。要以编程方式设置,可以在自定义适配器的getView()上执行此操作:

public View getView(int position, View convertView, ViewGroup parent) {

    View cv = convertView;

    if (convertView == null) {
            cv = inflater.inflate(R.layout.listview_item, null);
    }

    ImageView venueImage = (ImageView) cv.findViewById(R.id.venueImage);

    LinearLayout.LayoutParams vi_params = new LinearLayout.LayoutParams(LayoutParams.FILL_PARENT, (int)(screenHeight*0.33);
    venueImage.setLayoutParams(vi_params);

    return cv;
}

您可以通过在主要活动中添加此代码来获取屏幕高度:

int screenHeight = ((WindowManager)context.getSystemService(Context.WINDOW_SERVICE)).getDefaultDisplay().getHeight();