Android 图标可在带有API lower 21的按钮中绘制
我有两个活动,Android 图标可在带有API lower 21的按钮中绘制,android,android-layout,android-vectordrawable,Android,Android Layout,Android Vectordrawable,我有两个活动,addactivity和ViewActivity。这两个活动共享文件layout\u form.xml中定义的布局视图 首先,我的应用程序需要使用最低sdk版本16。所以在build.gradle文件中,我指定了它 这是layout\u form.xml的一个片段。剩下的代码并不重要 <android.support.v7.widget.Toolbar android:id="@+id/toolbar" android:layout_width="match_
addactivity
和ViewActivity
。这两个活动共享文件layout\u form.xml
中定义的布局视图
首先,我的应用程序需要使用最低sdk版本16。所以在build.gradle
文件中,我指定了它
这是layout\u form.xml
的一个片段。剩下的代码并不重要
<android.support.v7.widget.Toolbar
android:id="@+id/toolbar"
android:layout_width="match_parent"
android:layout_height="wrap_content">
<LinearLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:orientation="orizontal">
<Button
android:id="@+id/leftToolbarButton"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:drawableLeft="@drawable/ic_done"
android:drawableStart="@drawable/ic_done"
android:text="ADD"
android:textColor="@android:color/white" />
<Button
android:id="@+id/rightToolbarButton"
style="@style/Widget.AppCompat.Button.Borderless"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:drawableEnd="@drawable/ic_cancel"
android:drawableRight="@drawable/ic_cancel"
android:text="CANCEL"
android:textColor="@android:color/white" />
</LinearLayout>
</Toolbar>
现在,如果我在android>=21上运行我的应用程序,一切都正常。工具栏应该是这样的
相反,在安卓16上,它看起来是这样的
如你所见,如果我的应用程序运行在安卓16上(我不知道安卓17或更高版本会发生什么,但低于21)
图标不会更改。它们看起来仍然与xml布局文件中的设置相同
还有一件事。我将此侦听器添加到editButton
editButton.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
backButton.setCompoundDrawablesWithIntrinsicBounds(
R.drawable.ic_back, 0, 0, 0);
}
});
如果我点击它,现在图标会改变
那么,为什么在ViewActivity
的onCreate()
方法中图标不改变呢?解决了!
问题是
android:drawableStart="@drawable/ic_done"
在左工具栏按钮中
,和
android:drawableEnd="@drawable/ic_cancel"
在右侧工具栏按钮中
我从layout_form.xml中移出了这两行。
我添加它们是因为Android Studio建议我添加它们,以便更好地支持从左到右的布局
android:drawableEnd="@drawable/ic_cancel"