2011-09-16 53 views
4

我有一個ListView,我想有一個固定的高度(比如150dp)。然後,在ListView中,對於單獨的行,文本可以具有不同的長度,所以我希望行的高度不同。Android:如何使ListView中的行具有變量高度?

到目前爲止,我只獲得了所有具有相同高度的行,因此很長的文本被截斷。

任何方式來解決這個問題?

+0

你能爲listadapter顯示一些代碼嗎? –

回答

0

您可以嘗試設置行minHeight到150dp和heightwrap_content

你應該使用自定義佈局LIST_ITEM,這可能會幫助:Android Lists: ListActivity And ListView II – Custom Adapter And List Item View

+0

嘗試過但不起作用。我正在使用這段代碼作爲陣列適配器 - ArrayAdapter mcqAnsAdapter = new ArrayAdapter (this,android.R.layout.simple_list_item_single_choice,mcqOptions);我想也許這個問題與simple_list_item_single_choice有一個預定義的高度「?android:attr/listPreferredItemHeight」。所以想着爲自己創造一個自定義的,但有問題。有任何想法嗎? – alan

+0

更新答案 – BrainCrash

0
convertedview.setlayoutparams(new listview.setlayoutparams(width, height)); 

嘗試這樣的。它會工作。

2

最後,設法讓它工作。

我使用以下適配器代碼:

ArrayAdapter<String> mcqAnsAdapter = new 
     ArrayAdapter<String>(this, R.layout.mylist, mcqOptions); 

我已創建新佈局mylist.xml如下:

<?xml version="1.0" encoding="utf-8"?> 
<CheckedTextView xmlns:android="http://schemas.android.com/apk/res/android" 
    android:id="@android:id/text1" 
    android:layout_width="match_parent" 
    android:layout_height="wrap_content" 
    android:textAppearance="?android:attr/textAppearanceLarge" 
    android:gravity="center_vertical" 
    android:checkMark="?android:attr/listChoiceIndicatorSingle" 
    android:paddingLeft="6dip" 
    android:paddingRight="6dip" 
/> 

以上是類似於Android的定義的「simple_list_item_single_choice.xml 「除了我 改變高度爲」wrap_content「。

奇怪的是,我第一次嘗試它沒有奏效。然後,我在這裏和那裏做了一些改變,然後再次回到這個版本,它的工作。不知道發生了什麼事。但無論如何,很高興看到它的工作。

感謝所有試圖幫助的人。最受讚賞。

現在,另一個問題 - 我可以把複選標記左側的文本,而不是默認的右側?

+0

回答了我自己的問題,關於將複選標記放在左側。用這個 - android:drawableLeft =「?android:attr/listChoiceIndicatorSingle」替換mylist.xml中的一行checkMark行 - 它工作得非常好。 :-) – alan

相關問題