Частично видимые иконки режима действия 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
Скорее всего, это из-за меньшей высоты, чем требуют иконки.
Вы можете попробовать это.
-
Добавьте эти две строки в значения → 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>
Кроме того, приведенные здесь размеры могут быть маленькими или большими, так как я их не проверял, поэтому установите/настройте их в соответствии с вашими требованиями
И да, если это не сработает, пожалуйста, дайте мне знать, я предоставлю дополнительную помощь.
Ответ 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, это сработает.