Мой Samsung Galaxy s7 только что обновился до Android Nougat 7.0, и я заметил, что некоторые кнопки отображаются по-другому. У меня есть еще один Galaxy s7, который еще не прошел обновление (Marshmallow 6.0.1). Я очень хорошо вижу разницу в размерах:
Зефирка:
Нуга:
Для layout_height этой кнопки SHARE жестко установлено значение 44dp. Используя Layout Inspector в Android Studio, я могу прочитать, что он разрешается до 176 пикселей для Marshmallow и 132 пикселей для Nougat (те же значения для mMeasuredHeight). Вы также можете видеть, что другая часть макета слева осталась прежней (не обращайте внимания на значок маленького пальца вверх).
Другой пример:
Зефирка:
Нуга:
Я использую следующий стиль для кнопок:
<style name="AppTheme.Button" parent="Widget.AppCompat.Button">
<item name="android:textSize">14sp</item>
<item name="android:textColor">@color/colorPrimaryDark</item>
<item name="android:backgroundTint" tools:targetApi="lollipop">@color/colorTextBrightPrimary</item>
<item name="backgroundTint" >#FFFFFF</item>
<item name="colorButtonNormal">@color/colorTextBrightPrimary</item>
</style>
<style name="AppTheme.Button.Accent" parent="AppTheme.Button">
<item name="android:textColor">@color/colorTextBrightPrimary</item>
<item name="android:backgroundTint" tools:targetApi="lollipop">@color/colorAccent</item>
<item name="backgroundTint" >@color/colorAccent</item>
<item name="colorButtonNormal">@color/colorAccent</item>
</style>
В то время как кнопка SHARE является настраиваемым представлением, расширяющим AppCompatButton, кнопки аутентификации Google и Facebook — это просто AppCompatButtons. В любом случае, все они выглядели по-разному непосредственно перед обновлением, и больше ничего не менялось ни в коде, ни в устройстве (размер текста и масштаб одинаковые).
Есть идеи, что происходит? Как сделать так, чтобы эти макеты оставались одинаковыми на разных устройствах/ОС?
Configuration
иDensityMetrics
, изменилась ли их плотность? - person CommonsWare   schedule 16.03.2017