1

所以,我有一个 FrameLayout:

<FrameLayout
        android:id="@+id/btn"
        android:layout_width="50dp"
        android:layout_height="50dp" >

        <ImageButton
            android:id="@+id/b"
            android:layout_width="50dp"
            android:layout_height="50dp"
            android:background="@drawable/background" />
        <ImageButton
            android:id="@+id/bbtn"
            android:layout_width="50dp"
            android:layout_height="50dp"
            android:background="@drawable/testcontur1" />           
    </FrameLayout>

我不知道在两者之间放置什么框架布局,以便它“行为”类似于层列表。层列表示例是这样的:

<?xml version="1.0" encoding="utf-8"?>
      <layer-list xmlns:android="http://schemas.android.com/apk/res/android" >

        <item android:id="@+id/backgr">
            <bitmap android:gravity="center" android:src="@drawable/background" />
        </item>

        <item android:id="@+id/contur">
            <bitmap android:gravity="center" android:src="@drawable/testcontur1" />
        </item>

</layer-list>

所以,基本上,我需要做的是以某种方式在java中获得对第一个位图的引用。这个:

 <bitmap android:gravity="center" android:src="@drawable/background" />

但是我无论如何都无法做到这一点,所以我认为实现这一目标的唯一方法是使用 frameLayout 并在其中使用 imagebutton(或 imageview,无论如何)并通过它的 ID 获取对它的引用。

我怀疑它对任何人都有帮助,但我也会写我需要这个。我需要对位图 / ImageButton 的引用才能做到这样:

reference.getBackground().mutate().setColorFilter(Color.RED ,PorterDuff.Mode.Multiply);

对此的任何帮助或想法都会很棒,因为我从一大早起就一直在努力实现这一目标,但我无处可去。

4

1 回答 1

0

您可以获得对您的图层可绘制对象的引用。然后使用

public Drawable getDrawable (int index)

方法来获取对您需要的特定层的引用。之后,您可以随心所欲地进行。

http://developer.android.com/reference/android/graphics/drawable/LayerDrawable.html#getDrawable(int)

我还没有尝试过,但我很确定它应该可以工作。

于 2015-05-10T17:00:06.770 回答