我刚刚将com.android.support:appcompat-v7:25.3.1
的Android支持库更新为com.android.support:appcompat-v7:26.0.1
。它改变了动作模式图标的外观。现在它们是半可见/按下,如图所示。
它是支持库中的错误还是我做错了什么?
以下是我如何设置动作模式的图标。
@Override
public boolean onCreateActionMode(android.view.ActionMode mode, Menu menu) {
menu.add("Delete").setIcon(R.drawable.ic_action_discard);
menu.add("Copy").setIcon(R.drawable.ic_action_copy);
return true;
}
更新
我已经验证这是android支持库中的一个错误。
这是链接 https://issuetracker.google.com/issues/64207386
更新
Google更新了新版本。
来自Recent Support Library Revisions
页。
错误修复
支持库26.0.0上的菜单图标展平
答案 0 :(得分:9)
有可能因为图标需要的高度较低。
你可以试试这个。
在值中添加这两行 - > styles.xml - > Apptheme(样式名称必须仅为AppTheme
)。
<item name="android:actionButtonStyle">@style/actionButtonSize</item>
<item name="actionButtonStyle">@style/actionButtonSize</item>
并复制此样式(在相同的styles.xml中)。
<style name="actionButtonSize" parent="Widget.AppCompat.ActionButton">
<item name="android:minWidth">30dp</item>
<item name="android:maxWidth">48dp</item>
<item name="android:width">38dp</item>
<item name="android:minHeight">30dp</item>
<item name="android:maxHeight">48dp</item>
<item name="android:height">38dp</item>
</style>
此外,这里给出的尺寸可以很小或很大,因为我没有测试它们,所以根据您的要求设置/调整它们。
是的,如果这不起作用,请告诉我,我会提供更多的帮助。
答案 1 :(得分:4)
这是经过良好测试的代码,效果非常好。
Gradle依赖
compile 'com.android.support:appcompat-v7:26.0.1'
您可以在菜单文件夹中创建menu.xml文件,如下所示
<?xml version="1.0" encoding="utf-8"?>
<menu xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto">
<!-- "Mark Favorite", should appear as action button if possible -->
<item
android:id="@+id/action_favorite"
android:icon="@drawable/ic_action_name"
android:title="Test"
app:showAsAction="always" />
<!-- Settings, should always be in the overflow -->
<item
android:id="@+id/action_settings"
android:icon="@drawable/ic_announce"
android:title="Test"
app:showAsAction="always" />
</menu>
这里我为您的推荐创建了测试活动
package edu.cmu.pocketsphinx.demo;
import android.os.Bundle;
import android.support.annotation.Nullable;
import android.support.v7.app.AppCompatActivity;
import android.support.v7.widget.Toolbar;
import android.view.Menu;
/**
* Created by darshan.mistry on 8/30/2017.
*/
public class DemoActivity extends AppCompatActivity {
@Override protected void onCreate(@Nullable Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_demo);
Toolbar myToolbar = findViewById(R.id.my_toolbar);
setSupportActionBar(myToolbar);
}
@Override public boolean onCreateOptionsMenu(Menu menu) {
getMenuInflater().inflate(R.menu.temp_menu, menu);
return true;
}
}
活动xml文件:
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical"
>
<android.support.v7.widget.Toolbar
android:id="@+id/my_toolbar"
android:layout_width="match_parent"
android:layout_height="?attr/actionBarSize"
android:background="?attr/colorPrimary"
android:elevation="4dp"
android:theme="@style/ThemeOverlay.AppCompat.ActionBar"
app:popupTheme="@style/ThemeOverlay.AppCompat.Light"
/>
</LinearLayout>
答案 2 :(得分:2)
如果您使用矢量绘图作为图标,请确保它们的尺寸较小,忘记那些风格的东西。它发生在我身上,我的矢量宽度和高度就像500dp一样,如果你把它减少到24dp就可以说是24dp了。