0

这是在 AS 中即时运行不起作用的情况:

if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.LOLLIPOP) {
    toolbar.setElevation(visible ? getResources().getDimension(R.dimen.elevation_toolbar) : 0);
} else {
    View toolbarShadow = findViewById(R.id.toolbar_shadow);
    toolbarShadow.setVisibility(visible ? View.VISIBLE : View.GONE);
}

中的视图layout具有R.id.toolbar_shadow. 都好。

但是,如果您有一个layout-21不包含 的视图,R.id.toolbar_shadow那么当您将应用程序编译到例如Api 23设备 gradle 时将失败,并显示:

Error:(1046, 42) error: cannot find symbol variable toolbar_shadow

有什么想法可以解决这个问题吗?


更新:根据要求布局:

res/layout/actionbar.xml

<LinearLayout
    xmlns:android="http://schemas.android.com/apk/res/android"
    ... >

    <android.support.v7.widget.Toolbar
        android:id="@+id/toolbar"
        ... />

    <View
        android:id="@+id/toolbar_shadow"
        ... />

</LinearLayout>

res/layout-21/actionbar.xml

<android.support.v7.widget.Toolbar
    xmlns:android="http://schemas.android.com/apk/res/android"
    android:id="@+id/toolbar"
            ... />
4

1 回答 1

0

好的,发现解决方案手动添加了资源中缺少的 id:

<!--To make Instant Run work if these ids are not in 21+-->
<item name="toolbar_shadow" type="id"/>
于 2016-05-06T16:50:06.740 回答