まず、重複しているように聞こえたらすみません。非常に多くのスレッドにアクセスしましたが、問題の適切な答えが見つかりませんでした。親で ScrollingMovementMethod、android:scrollbar、wrap_content を試してみましたが、これらのスレッドで提案された他の多くのことを試しましたが、何もうまくいきませんでした。良いタイトルが見つからなかったので、自由にタイトルを編集してください。
問題の説明 リスト ビューがあり、リスト ビューの各行には 3 つのコントロールがあります。可能な場合は))。
私が試したこと:- 1. XML レイアウト、
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent" >
<ImageView
android:id="@+id/icon"
android:layout_width="22dp"
android:layout_height="50dp"
android:layout_marginLeft="4dp"
android:layout_marginRight="15dp"
android:contentDescription="@string/strBuddyImage" >
</ImageView>
<RelativeLayout
android:layout_width="match_parent"
android:layout_height="match_parent"
android:minHeight="56dp" >
<TextView
android:id="@+id/uNameTxt"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:layout_above="@+id/customMsg"
android:minHeight="?android:attr/listPreferredItemHeight"
android:singleLine="true"
android:textAppearance="?android:attr/textAppearanceMedium"
android:textSize="@dimen/fontSizeListRowHeader" />
<TextView
android:id="@+id/customMsg"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:layout_alignParentBottom="true"
android:layout_alignParentLeft="true"
android:maxLines="4"
android:textSize="@dimen/fontSizeListRowText"
android:textStyle="italic" />
</RelativeLayout>
</LinearLayout>
ArrayAdapter を拡張するアダプター (getView メソッドのみをオーバーライドします)
static class ViewHolder { public ImageView imageView; public TextView uNameTxtView; public TextView custMsgTxtView; }
@Override public View getView(int position, View convertView, ViewGroup parent) { View rowView = convertView; // Log.d("BuddyListAdapter", "Inside getView() " + position); if ( rowView == null ) { LayoutInflater inflater = (LayoutInflater) context.getSystemService(Context.LAYOUT_INFLATER_SERVICE); rowView = inflater.inflate(R.layout.buddy_listview_row_layout, parent, false); viewHolder = new ViewHolder(); viewHolder.uNameTxtView = (TextView) rowView.findViewById(R.id.uNameTxt); viewHolder.imageView = (ImageView) rowView.findViewById(R.id.icon); viewHolder.custMsgTxtView = (TextView) rowView.findViewById(R.id.customMsg); rowView.setTag(viewHolder); } viewHolder = (ViewHolder) rowView.getTag(); synchronized (buddyList) { buddy = buddyList.get(position); } viewHolder.uNameTxtView.setText(buddy.getDisplayName()); viewHolder.custMsgTxtView.setText(buddy.getCustomMessage()); // Change the icon for users who are offline if ( buddy.getState() == 0 ) { viewHolder.imageView.setImageResource(R.drawable.offline); } else { viewHolder.imageView.setImageResource(R.drawable.online); } // rowView.setLayoutParams(new LayoutParams(LayoutParams.MATCH_PARENT, LayoutParams.WRAP_CONTENT)); return rowView; }
私が得るもの
同じサイズのリストビューのすべての行を表示したい のですが、誰かがより大きなステータスメッセージ (複数行が必要) を持っている場合は、その人の名前とステータスメッセージの最初の数行 (4 など) を表示したいと思います。 . ステータスメッセージがどれほど大きくても、名前は常にユーザーに表示される必要があります..どうすればできますか?
コードに他の間違いがあれば指摘してください。