3

我使用“android:drawableLeft”在布局中设置图像图标。这是我的布局代码:

<CheckedTextView xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:tools="http://schemas.android.com/tools"
    android:id="@+id/textView1"
    android:layout_marginLeft="8dp"
    android:drawableLeft="@drawable/ic_launcher"
    android:gravity="left"/> 

我需要做的是,使用我的班级将此图像更改为其他图像。这是我在使用 BaseExpandableListAdapter 扩展的 Adapter 类中使用的代码。

if (convertView == null) {
convertView = inflater.inflate(R.layout.listrow_details, null);
}
((CheckedTextView) convertView).setCheckMarkDrawable(R.drawable.ic_folder);

但这不是替换使用的图像。而是将其替换为同一行。我应该怎么做才能用新图像替换当前图像?

4

3 回答 3

5

在您正在使用的 xml 中

`android:drawableLeft="@drawable/ic_launcher"`

在你正在做的适配器中

((CheckedTextView) convertView).setCheckMarkDrawable(R.drawable.ic_folder);

这是 CheckedTextView 的两个不同特性。CheckMark drawable 和 drawable 是不同的drawable。要添加或更改CheckedTextView的左、右、上、下图像,您应该使用

CheckedTextView.setCompoundDrawablesWithIntrinsicBounds(Drawable left, Drawable top, Drawable right, Drawable bottom)

或者

CheckedTextView.setCompoundDrawablesWithIntrinsicBounds(int left, int top, int right, int bottom)

并更改 CheckMark drawableCheckedTextView.setCheckMarkDrawable(R.drawable.ic_folder);

于 2014-01-23T08:09:57.143 回答
1

这就是我为解决问题所做的。希望它会帮助任何面临同样问题的人。这里 parent 是 ViewGroup 参数,

Drawable imageDrawable=parent.getContext().getResources().getDrawable((R.drawable.ic_folder));
 imageDrawable.setBounds(0,0, 40, 40);
((CheckedTextView) convertView).setCompoundDrawables(imageDrawable, null,null, null);
于 2014-01-24T05:14:30.870 回答
0
Drawable img = getContext().getResources().getDrawable( R.drawable.ic_folder );

((CheckedTextView) convertView).setCompoundDrawables( img, null, null, null );
于 2014-01-23T06:56:41.887 回答