Android: Обновление с Материала 1.0 вызывает проблемы - PullRequest
1 голос
/ 07 февраля 2020

Я недавно обновился с материала 1.0 до материала 1.1, чтобы иметь возможность использовать новый TabLayoutMediator.

Gradle:

implementation 'com.google.android.material:material:1.1.0'

Это сработало. Тем не менее, теперь я столкнулся со странными проблемами интерфейса после обновления.

[Picture of some bugs[1]

Я включил четыре изображения на картинке. Проблемы:

  1. Кнопки MaterialButtons имеют черную рамку. Перед обновлением у них не было границ.
  2. Material FloatingActionsButtons внезапно имеют черные значки. До обновления иконки были белыми.
  3. Иконки навигации тоже черные. До обновления эти значки были серыми sh.
  4. Текстовые поля деформированы до неузнаваемости

Теперь я нахожу странным, что такое незначительное обновление может вызвать такие странные проблемы. Также странно, что я попробовал некоторые ручные исправления - например, изменение оттенка FloatingActionButton, чтобы снова получить белый значок, - но эти ручные исправления, похоже, не работают.

В чем причина этих проблем и как я могу это исправить? Я подумал вернуться к материалу 1.0 ....


Обновление

Тема моего приложения:

   <style name="AppTheme" parent="Theme.MaterialComponents.Light.DarkActionBar">
        <item name="colorPrimary">@color/colorPrimary</item>
        <item name="colorPrimaryDark">@color/colorPrimaryDark</item>
        <item name="colorAccent">@color/colorAccent</item>
        <item name="android:textViewStyle">@style/GlobalTextViewStyle</item>
   </style>

   <style name="AppTheme.NoActionBar">
        <item name="windowNoTitle">true</item>
        <item name="windowActionBar">false</item>
        <item name="android:windowFullscreen">true</item>
        <item name="android:windowContentOverlay">@null</item>
    </style>

My MaterialButton :

 <com.google.android.material.button.MaterialButton
                style="@style/Widget.AppCompat.Button.Borderless"
                android:layout_width="0dp"
                android:layout_height="wrap_content"
                android:layout_marginStart="16dp"
                android:layout_marginEnd="16dp"
                android:layout_marginBottom="20dp"
                android:paddingTop="12dp"
                android:paddingBottom="12dp"
                android:textAllCaps="false"
                android:textColor="#FFF"
                android:textSize="15sp"
                app:backgroundTint="#2196F3"
                app:cornerRadius="6dp"
                app:layout_constraintBottom_toBottomOf="parent"
                app:layout_constraintEnd_toEndOf="parent"
                app:layout_constraintHorizontal_bias="0.5"
                app:layout_constraintStart_toStartOf="parent"
                app:layout_constraintWidth_max="400dp"
                app:strokeWidth="2dp" />


Обновление # 2

Пока все исправлено вручную, меняя цвета. Кажется, что значения по умолчанию изменились в материале 1.1. Тем не менее, текстовые поля по-прежнему вызывают проблемы. Вот код, который я использую для их добавления:

TextInputLayout textInputLayout = new TextInputLayout(view.getContext());
textInputLayout.setLayoutParams(new LinearLayout.LayoutParams(LinearLayout.LayoutParams.MATCH_PARENT, LinearLayout.LayoutParams.WRAP_CONTENT));
textInputLayout.setPadding(0, 0, 0, 40);

TextInputEditText editText = new TextInputEditText(view.getContext());
editText.setHint(getVerboseName());
textInputLayout.addView(editText);
linearLayout.addView(textInputLayout);

Ответы [ 2 ]

1 голос
/ 09 февраля 2020

MaterialButtons имеют черную рамку. До обновления у них не было границы.

В вашем MaterialButton:

 <com.google.android.material.button.MaterialButton
                style="@style/Widget.AppCompat.Button.Borderless"
                app:strokeWidth="2dp" />
  • есть app:strokeWidth="2dp": удалить it.
  • Вы используете тему AppCompat. Измените его на Widget.MaterialComponents.Button.
0 голосов
/ 25 февраля 2020

Хорошо, чтобы сделать вывод:

Ручные исправления действительно работают, нужно просто убедиться, что используются надлежащие стили материала. Четыре ошибки не связаны друг с другом. Четвертая ошибка была вызвана тем, что я не дал EditText внутри TextInputLayout контекст TextInputLayout, а скорее контекст самого фрагмента.

Если кто-то еще сталкивается с такими проблемами, они являются отдельными проблемами и должны рассматриваться как таковые. При обновлении до материала 1.1 были введены новые значения по умолчанию, а не ошибки.

...