Как я могу найти элементы из фонового файла drawbale в деятельности? - PullRequest
0 голосов
/ 13 марта 2019

У меня есть активность с нет макета. Я установил это как тему прямо в AndroidManifest:

Android: тема = "@ стиль / 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_red и ic_icon_blue) в своей деятельности, чтобы я мог выполнять необходимую логику. findViewById() в этом случае не работает. Спасибо!

1 Ответ

0 голосов
/ 13 марта 2019

Это должно быть так, если я правильно понял.

@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)
...