如何根据显示分辨率设置列表项高度

时间:2014-08-31 17:58:58

标签: android xml list

我有一个列表视图,一个列表项包含两个 textview&#39> 和一个 imageview (实际图片是从服务器借助ION库)。我想在屏幕上准确显示3个列表项,但是由于屏幕分辨率不同,我只能通过设置项目高度来完成。

我尝试的是:

vi_params = new RelativeLayout.LayoutParams(LayoutParams.WRAP_CONTENT, (int)(MainActivity.screenHeight*0.33));
userImage.setLayoutParams(vi_params);

但是这会给事件带来不同的结果 - 根本不显示任何图像。

这就是我的list_item.xml的样子。

<RelativeLayout
    android:id="@+id/widget32"
    android:layout_width="fill_parent"
    android:layout_height="110dp"
    xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:tools="http://schemas.android.com/tools"
    android:layout_x="0dp"

    android:layout_y="0dp">

    <ImageView
        android:id="@+id/imageView1"
        android:layout_width="fill_parent"
        android:layout_height="260dp"
        android:layout_x="0dp"
        android:layout_y="0dp"

        android:scaleType="fitXY"
        android:src="@drawable/ic_launcher" />
    <TextView 
        android:id="@+id/ID"
            android:layout_width="320dp"
    android:layout_height="wrap_content"
    android:visibility="invisible"/>

<TextView
    android:id="@+id/textView1"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:layout_alignParentLeft="true"
    android:layout_alignParentTop="true"
    android:layout_marginLeft="10dp"
    android:layout_marginTop="10dp"
    android:text="TextView" />

<TextView
    android:id="@+id/textView2"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:layout_alignParentBottom="true"
    android:layout_alignParentRight="true"
    android:layout_marginBottom="10dp"
    android:layout_marginRight="10dp"
    android:text="TextView" />

</RelativeLayout>

那么,任何想法如何根据屏幕高度制作列表项高度,所以只有三个适合?

1 个答案:

答案 0 :(得分:1)

所以,就像我想的那样,将整数乘以0.33返回0,所以我使用了DIVISION: &#34; userImage.getLayoutParams()。height = MainActivity.height / 3;

无论如何,我仍然没有得到想要的结果,因为actionBar仍然会发生。

所以我得到了它:

TypedValue tv = new TypedValue();
        if (getTheme().resolveAttribute(android.R.attr.actionBarSize, tv, true))
        {
            actionbarheight = TypedValue.complexToDimensionPixelSize(tv.data,getResources().getDisplayMetrics());
        }

但它仍然不是完美的,所以我得到了自己的标题:

public int getStatusBarHeight() { 
          int result = 0;
          int resourceId = getResources().getIdentifier("status_bar_height", "dimen", "android");
          if (resourceId > 0) {
              result = getResources().getDimensionPixelSize(resourceId);
          } 
          return result;
    }