ListViewで奇妙な動作が見られます。androidのListView行の動的な高さ
私はListViewを持っていますが、これにはいくつかのデータが入っています。各行には画像と3つのテキストラベルが含まれています。テキストフィールドに入るものは何でも、
今<?xml version="1.0" encoding="utf-8"?>
<LinearLayout
xmlns:android="http://schemas.android.com/apk/res/android"
android:paddingTop="0dip"
android:paddingBottom="0dip"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:orientation="horizontal">
<ImageView android:id="@+id/Icon"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:layout_weight="2"
android:padding="2dp"
android:scaleType="fitCenter"
android:contentDescription="@string/app_icon"/>
<TextView android:id="@+id/TxtName"
android:scrollHorizontally="false"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:textColor="@android:color/black"
android:background="@color/list_bg1"
android:layout_weight="2"
android:padding="2dp"/>
<TextView android:id="@+id/TxtPackage"
android:scrollHorizontally="false"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:layout_weight="2"
android:textColor="@android:color/black"
android:background="@color/list_bg2"
android:padding="2dp"/>
<TextView android:id="@+id/TxtSource"
android:scrollHorizontally="false"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:layout_weight="2"
android:background="@color/list_bg3"
android:textColor="@android:color/black"
android:padding="2dp"/>
</LinearLayout>
(数文字80から100文字まで)の任意な長さのものとすることができる:ここでは、行のための私のXMLは、(私はアダプタのgetView
方法でそれを膨らませています)ですラップされたラベルの高さに合わせてラベルを折り返して、行の高さを拡大します。
しかし、ラベルは折り返されますが、行の高さは拡大しないため、ラベルの下端が切り取られます。ここに私のgetView
方法です:
@Override
public View getView(int position, View convertView, ViewGroup parent) {
SetInfo app = (SetInfo)getItem(position);
if(app == null)
return null;
LinearLayout row = (LinearLayout) (convertView == null
? LayoutInflater.from(context).inflate(R.layout.listitem, parent, false)
: convertView);
((TextView)row.findViewById(R.id.TxtName)).setText(app.getName());
((TextView)row.findViewById(R.id.TxtPackage)).setText(app.getPackage());
((TextView)row.findViewById(R.id.TxtSource)).setText(app.getSource());
if(app.getIcon() != null)
((ImageView)row.findViewById(R.id.Icon)).setImageDrawable(app.getIcon());
return row;
}
がどのように異なる高さであるように行を持つことができ、すべてのコンテンツに合わせて自動的に調整?
より良い方法を使用アンドロイド:行のレイアウトのTextviewでmaxLines = 1それ以上の1行のテキストを防ぐ –
あなたはandroid:layout_weightを1に調整しようとしましたか? –
@Samir:私は正反対にしたい:すべてのテキストを表示する必要があるので、ラベルは折り返さなければならない。 –