我有listviewitem布局的列表活动。 listviewitem包含一个textview,问题是如果textview中的字符串太长 - 例如3行,然后listviewitem高度不会更改以包装内容。我正在使用适配器进行列表视图。
只有在使用适配器插入新项目时才会出现问题!!!!!!
以下是布局和适配器:
public class RecipeInstructionsListViewAdapter extends ArrayAdapter<Instruction>
{
private Context mContext;
private ArrayList<Instruction> mItems;
private LayoutInflater mInflater;
public RecipeInstructionsListViewAdapter(Context context, int textViewResourceId,ArrayList<Instruction> items)
{
super(context,textViewResourceId,items);
mContext=context;
mItems=items;
mInflater=(LayoutInflater)mContext.getSystemService(Context.LAYOUT_INFLATER_SERVICE);
}
@Override
public View getView(int position,View convertView,ViewGroup parent)
{
ViewHolder holder = new ViewHolder();
if(convertView == null)
{
convertView =mInflater.inflate(R.layout.recipes_instruction_list_single_view_entry, null);
}
if( super.getItem(position) != null )
{
holder.instructionIndex = (TextView) convertView.findViewById( R.id.listUp_RecipeInstructionNumberTextBoxId );
holder.instructionText = (TextView) convertView.findViewById( R.id.listUp_RecipeInstructioTextTextBoxId );
holder.instructionImage = (ImageView)convertView.findViewById( R.id.listUp_RecipeInstructionImageViewId );
Typeface tf = Typeface.createFromAsset(mContext.getAssets(), "Eras_Bold.ttf");
holder.instructionIndex.setTypeface(tf);
holder.instructionIndex.setTextSize(30);
holder.instructionIndex.setTextColor( GlobalDefs.GetHeadlineColor() );
holder.instructionIndex.setText( Integer.toString(mItems.get(position).getIndex() ) );
tf = Typeface.createFromAsset(mContext.getAssets(), "Arial.ttf");
holder.instructionText.setTypeface(tf);
holder.instructionText.setTextSize(14);
holder.instructionText.setTextColor( Color.BLACK );
holder.instructionText.setText( mItems.get(position).getText() );
String imageLocation = mItems.get(position).GetInstructionImageLocation();
if( imageLocation != null )
{
holder.instructionImage.setImageURI( Uri.parse( imageLocation ) );
holder.instructionImage.setVisibility( View.VISIBLE );
}
else
{
holder.instructionImage.setVisibility( View.GONE );
}
convertView.setTag(holder);
convertView.setLayoutParams( new ListView.LayoutParams(LayoutParams.FILL_PARENT, LayoutParams.WRAP_CONTENT));
}
else
{
}
return convertView;
}
@Override
public boolean isEnabled(int position)
{
return true;
}
static class ViewHolder
{
TextView instructionIndex;
TextView instructionText;
ImageView instructionImage;
}
}
XML:
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout
xmlns:android="http://schemas.android.com/apk/res/android"
android:orientation="horizontal"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:background="@drawable/list_up" >
<TextView
android:id="@+id/listUp_RecipeInstructionNumberTextBoxId"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_alignParentTop="true"
android:layout_alignParentLeft="true"
android:textSize="30dip" />
<ImageView
android:layout_height="19dp"
android:layout_width="19dp"
android:id="@+id/listUp_RecipeInstructionImageViewId"
android:layout_alignParentTop="true"
android:layout_alignParentRight="true"
android:layout_marginRight="19dp" />
<TextView
android:id="@+id/listUp_RecipeInstructioTextTextBoxId"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_alignParentTop="true"
android:layout_toRightOf="@+id/listUp_RecipeInstructionNumberTextBoxId"
android:layout_marginLeft="15dp"
android:textSize="14dip" />
</LinearLayout>
答案 0 :(得分:0)
我认为您应该使用(LayoutParams.FILL_PARENT,LayoutParams.FILL_PARENT)而不是(LayoutParams.FILL_PARENT,LayoutParams.WRAP_CONTENT)。
答案 1 :(得分:0)
https://developer.android.com/reference/android/widget/ExpandableListView.html
”注意:如果未严格指定父级的大小(例如,如果父级是ScrollView,则不能指定wrap_content,因为它也可以),则不能在XML中的ExpandableListView的android:layout_height属性中使用值wrap_content可以是任意长度。但是,如果ExpandableListView父级具有特定大小(例如100像素),则可以使用wrap_content。“