部分可见的动作模式图标android

时间:2017-08-21 09:09:26

标签: android android-actionmode

我刚刚将com.android.support:appcompat-v7:25.3.1的Android支持库更新为com.android.support:appcompat-v7:26.0.1。它改变了动作模式图标的外观。现在它们是半可见/按下,如图所示。

Action mode Icons

它是支持库中的错误还是我做错了什么?

以下是我如何设置动作模式的图标。

  @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上的菜单图标展平

3 个答案:

答案 0 :(得分:9)

有可能因为图标需要的高度较低。

你可以试试这个。

  1. 在值中添加这两行 - > styles.xml - > Apptheme(样式名称必须仅为AppTheme)。

    <item name="android:actionButtonStyle">@style/actionButtonSize</item>
    <item name="actionButtonStyle">@style/actionButtonSize</item>
    
  2. 并复制此样式(在相同的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>
    
  3. 此外,这里给出的尺寸可以很小或很大,因为我没有测试它们,所以根据您的要求设置/调整它们。
    是的,如果这不起作用,请告诉我,我会提供更多的帮助。

答案 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了。