web-dev-qa-db-ja.com

ListViewアイテムの高さを設定する方法

アイテムの高さをデバイスの高さを参照して変更したいListActivityがあります

public class MainActivity extends ListActivity
{
            .
            .
            .
            setListAdapter(new ArrayAdapter<String>(MainActivity.this,
                Android.R.layout.simple_list_item_1,mainMenuItems));
}

ギャラクシーネクサスS上の私のListActivity:

enter image description here

そして銀河のネクサス7上で: enter image description here

リストビューアイテムの高さを定義するにはどうすればよいですか?

11
Erfan Bagheri

ListViewアイテムの高さは、アイテムレイアウトコンテンツの高さです。例:Android.R.layout.simple_list_item_1 高さ。別の高さが必要な場合は、xmlファイルを作成し、Android:layout_heightまたはAndroid:minHeight属性。

これは変更されたsimple_list_item_1これはあなたの値を参照します

<TextView 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/textAppearanceListItemSmall"
    Android:gravity="center_vertical"
    Android:paddingStart="?android:attr/listPreferredItemPaddingStart"
    Android:paddingEnd="?android:attr/listPreferredItemPaddingEnd"
    Android:paddingLeft="?android:attr/listPreferredItemPaddingLeft"
    Android:paddingRight="?android:attr/listPreferredItemPaddingRight"
    Android:minHeight="@dimen/your_defined_minumum_height"/>

そしてあなたのdimen.xmlに

<dimen name="your_defined_minumum_height">48dp</dimen>
26
_ListView lvLogs = new ListView(this);
lvLogs.setAdapter(new ArrayAdapter<String>(this, Android.R.layout.simple_list_item_1, logs) {

        @Override
        public View getView(int position, View convertView, ViewGroup parent) {
            View view = super.getView(position, convertView, parent);
            TextView textView = ((TextView) view.findViewById(Android.R.id.text1));
            textView.setMinHeight(0); // Min Height
            textView.setMinimumHeight(0); // Min Height 
            textView.setHeight(44); // Height
            return view;
        }
    });
_

注:MinHeightとMinimumHeightが必要です!!!

最小の高さを0〜20(またはそれ以上)に設定します:setMinHeight(?) + setMinimumHeight(?)

次に、ListViewのTextViewは通常の高さ(ListViewのデフォルトよりも小さい)になります

高さをピクセル単位で指定する場合は、setHeight(?)を使用します

5
BaiJiFeiLong

ListViewのアイテムごとに独自のカスタムレイアウトファイルを作成する必要があります。そこで、好きなように編集でき、多くの利点を得ることができます。

3
Procurares

ScreenHeight(H)の情報を使用して、ListView用のアダプターをカスタマイズします。画面に9列(アイテム)を表示したい場合、各列の高さをH/9として指定できます。そうすることで、すべてのデバイスでのListViewの外観を正確に制御できます。

0
Ed Kung