27

我有文本视图

<TextView
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_marginLeft="20dip"
            android:drawableTop="@drawable/new" />

我想在活动 jave 上知道设置了哪个图像drawableTop,如何设置?

4

4 回答 4

29

利用

 Drawable[] drawables = textView.getCompoundDrawables();

另外,如果您想比较两个可绘制对象。

Bitmap bitmap = ((BitmapDrawable)drawables[1] ).getBitmap();
Bitmap bitmap2 = ((BitmapDrawable)getResources().getDrawable(R.drawable.twt_hover)).getBitmap();

if(bitmap == bitmap2)
    {
        //Code blcok
    }
于 2013-01-24T20:56:46.357 回答
11

首先,给您TextView一个 ID,以便您可以在以下位置找到它Activity

<TextView
    android:id="@+id/textView"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:layout_marginLeft="20dip"
    android:drawableTop="@drawable/new" />

其次,在你Activity找到你的并在调用之后TextView在你的方法中获取复合可绘制对象:onCreatesetContentView

TextView textView = (TextView) findViewById(R.id.textView);
// Left, top, right, bottom drawables.
Drawable[] compoundDrawables = textView.getCompoundDrawables();
// This is the top drawable.
Drawable topCompoundDrawable = compoundDrawables[1];
于 2013-01-24T20:59:37.270 回答
2

我认为你应该使用 textView.getCompoundDrawables(); 至于从可绘制顶部获得,我认为这将是第二个可绘制的,例如

Drawables tmp[] = textView.getCompoundDrawables();
tmp[1];  //this should be your top drawable but not 100% sure.
于 2013-01-24T20:57:55.403 回答
2

您无法在运行时获取可绘制 ID。TextView 仅在其构造函数中使用 ID 来加载相应的可绘制对象。加载可绘制对象后,ID 消失了。

在某些情况下,根本没有可绘制的 ID。drawableTop 可以是颜色 rgb 值。

于 2013-01-24T20:58:20.597 回答