首先,如果听起来重复,请原谅。我访问了这么多线程,但找不到适合我的问题的答案。我已经尝试过父级中的 ScrollingMovementMethod、android:scrollbar、wrap_content 以及这些线程中建议的许多其他内容,但对我没有任何帮助。随意编辑标题,因为我找不到更好的标题。
问题描述 我有一个列表视图,列表视图的每一行都有三个控件 1. Image View(显示联系人图像) 2. TextView(显示联系人姓名) 3. TextView(显示联系人的状态消息(如果可供使用的话))。
我尝试过的:- 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 方法)
静态类 ViewHolder { public ImageView imageView; 公共文本视图 uNameTxtView;公共文本视图 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) . 无论状态消息有多大,名称都应该始终对用户可见。我该怎么做?
如果您在代码中发现任何其他错误,请指出。