如何在活动中查找可绘制背景文件中的项目?

问题描述 投票:0回答:1

我有一个没有布局的活动。我直接在AndroidManifest中将它设置为主题:

机器人:主题= “@风格/ MyTheme的”>

我的主题只包含一个背景:

<style name="MyTheme"
    <item name="android:windowBackground">@drawable/background</item>
</style>

这是后台文件,只包含两个项目:

<layer-list xmlns:android="http://schemas.android.com/apk/res/android">

    <item
        android:drawable="@color/colorDarkGrey"/>

    <item
        android:id="@+id/ic_icon_red"
        android:drawable="@drawable/ic_icon_red"/>

    <item
        android:id="@+id/ic_icon_blue"
        android:drawable="@drawable/ic_icon_blue"/>
</layer-list>

如何在我的活动中找到(ic_icon_redic_icon_blue),这样我就可以做我想要的逻辑。在这种情况下,findViewById()不起作用。谢谢!

android android-activity android-drawable android-theme android-background
1个回答
0
投票

如果我理解正确,那应该是这样的。

@Test
public void testDrawable(){
    Context appContext = InstrumentationRegistry.getTargetContext();
    LayerDrawable backGroundLayer = (LayerDrawable) appContext.getResources().getDrawable(R.drawable.background);
    assertNotNull(backGroundLayer.findDrawableByLayerId(R.id. ic_icon_red));
}

以上只是测试用例来检查,你可以这样使用。

LayerDrawable backGroundLayer = (LayerDrawable)getResources().getDrawable(R.drawable.background);
Drawable drawable = backGroundLayer.findDrawableByLayerId(R.id. ic_icon_red)
© www.soinside.com 2019 - 2024. All rights reserved.