アイテムの高さをデバイスの高さを参照して変更したいListActivityがあります
public class MainActivity extends ListActivity
{
.
.
.
setListAdapter(new ArrayAdapter<String>(MainActivity.this,
Android.R.layout.simple_list_item_1,mainMenuItems));
}
ギャラクシーネクサスS上の私のListActivity:
そして銀河のネクサス7上で:
リストビューアイテムの高さを定義するにはどうすればよいですか?
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>
_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(?)
を使用します
ListViewのアイテムごとに独自のカスタムレイアウトファイルを作成する必要があります。そこで、好きなように編集でき、多くの利点を得ることができます。
ScreenHeight(H)の情報を使用して、ListView
用のアダプターをカスタマイズします。画面に9列(アイテム)を表示したい場合、各列の高さをH/9として指定できます。そうすることで、すべてのデバイスでのListView
の外観を正確に制御できます。