我有一个带自定义列表项的ListView。
但是图片没有显示出来,您能告诉我布局有什么问题吗?这是我的适配器。
问题是:图片无法显示。
<?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="wrap_content"
android:orientation="horizontal" >
<ImageView
android:id="@android:id/icon"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:contentDescription="@string/app_name"
android:maxWidth="32dp" />
<TextView
android:id="@android:id/title"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_gravity="center|left"
android:paddingBottom="4dp"
android:paddingTop="4dp"
android:textIsSelectable="true"
android:textSize="24sp" >
</TextView>
</LinearLayout>
现在Eclipse给我警告:此标记及其子元素可以被一个<TextView/>和复合绘图替代
。虽然一切正常,但我不喜欢警告,所以我把视图改成了这样。
<?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="wrap_content"
android:orientation="horizontal" >
<TextView
android:id="@android:id/title"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_gravity="center|left"
android:paddingBottom="4dp"
android:paddingTop="4dp"
android:textIsSelectable="true"
android:textSize="24sp"
android:drawableLeft="@drawable/unstarred" >
</TextView>
</LinearLayout>
但是图片没有显示出来,您能告诉我布局有什么问题吗?这是我的适配器。
public class CategoryAdapter extends ArrayAdapter<Category> {
private Context mContext;
private int mLayoutResourceId;
private Category mCategories[] = null;
public CategoryAdapter(Context context, int layoutResourceId, Category[] data) {
super(context, layoutResourceId, data);
mContext = context;
mCategories = data;
mLayoutResourceId = layoutResourceId;
}
@Override
public View getView(int position, View convertView, ViewGroup parent) {
View row = convertView;
Holder holder = null;
if(null == row) {
row = LayoutInflater.from(mContext).inflate(mLayoutResourceId, parent, false);
holder = new Holder();
holder.mIcon = (ImageView)row.findViewById(android.R.id.icon);
holder.mTitle = (TextView)row.findViewById(android.R.id.title);
row.setTag(holder);
} else {
holder = (Holder) row.getTag();
}
// obviously only one is used at a time
// First layout
final Category category = mCategories[position];
holder.mTitle.setText(category.getName());
holder.mIcon
.setImageResource(category.getStarred() == 1 ? R.drawable.starred : R.drawable.unstarred);
// Second layout
final Category category = mCategories[position];
final Drawable icon = getResources().getDrawable(category.getStarred() == 1 ? R.drawable.starred : R.drawable.unstarred);
holder.mTitle.setText(category.getName());
holder.mTitle.setCompoundDrawables(icon, null, null, null);
return row;
}
}
public static class Holder {
ImageView mIcon;
TextView mTitle;
}
问题是:图片无法显示。
setCompoundDrawablesWithIntrinsicBounds
在我的设备上能够正常工作,但在Android 4.4上却不行。当我阅读了您的解释后,对于相对边界确实有了更深刻的理解。谢谢。 - Murtaza Khursheed Hussain