2011-12-05 44 views
1
<?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。Android設置列表視圖行高取決於屏幕分辨率

我只會有3行,但我希望這3行具有相同的高度以適合屏幕分辨率的高度。此刻,我甚至不知道如何設置行的高度,因爲設置LinearLayout的高度不會做任何事情。

+0

爲什麼要用'的ListView '只有3行,尤其是每行只是一個'ImageView'?只需使用一個帶有3個'ImageViews'的'LinearLayout'(垂直方向)並給每個'layout_weight'。使每個'ImageView'的'layout_weight'相同,並且不管屏幕分辨率如何均勻分佈。 – Squonk

回答

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(); 
+0

即時將錯誤信息添加到我的主要活動 – Adam

+0

我猜它與「上下文」。將上下文更改爲「YourActivity.this」 – Erick

+0

它適用於我!謝謝! –