Частично видимые иконки режима действия android

Я только что обновил библиотеку поддержки Android от com.android.support:appcompat-v7:25.3.1 до 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

Ответ 1

Скорее всего, это из-за меньшей высоты, чем требуют иконки.

Вы можете попробовать это.

  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>
    

Кроме того, приведенные здесь размеры могут быть маленькими или большими, так как я их не проверял, поэтому установите/настройте их в соответствии с вашими требованиями
И да, если это не сработает, пожалуйста, дайте мне знать, я предоставлю дополнительную помощь.

Ответ 2

Это хорошо протестированный код, и он работает очень хорошо.

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>

Ответ 3

Если вы используете векторные чертежи в качестве своих значков, убедитесь, что они имеют небольшой размер, забудьте об этих стилях. Это случается со мной однажды, у меня была ширина и высота моих векторов, таких как 500dp, если вы уменьшите ее, чтобы сказать 24dp на 24dp, это сработает.