繁体   English   中英

Android:从 Material 1.0 升级导致问题

[英]Android: Upgrade from Material 1.0 causing problems

我最近从材料 1.0 升级到材料 1.1 以便能够使用新的TabLayoutMediator

摇篮:

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

那行得通。 但是,自升级以来,我现在面临着奇怪的 UI 问题。

[一些错误的图片[1]

我在图片中包含了四个问题。 问题是:

  1. MaterialButtons 有一个黑色边框。 在升级之前他们没有边界。
  2. Material FloatingActionsButtons 突然出现黑色图标。 在升级之前,图标是白色的。
  3. 导航图标也是黑色的。 在升级之前,这些图标是灰色的。
  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>

我的材质按钮:

 <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);

MaterialButtons 有一个黑色边框。 在升级之前他们没有边界。

在您的 MaterialButton 中:

 <com.google.android.material.button.MaterialButton
                style="@style/Widget.AppCompat.Button.Borderless"
                app:strokeWidth="2dp" />
  • app:strokeWidth="2dp"删除它。
  • 您正在使用 AppCompat 主题。 将其更改为Widget.MaterialComponents.Button

好总结:

手动修复确实有效,只需要确保使用正确的材质样式。 这四个错误彼此无关。 第四个错误是由于我没有为 TextInputLayout 中的 EditText 提供 TextInputLayout 的上下文,而是提供了片段本身的上下文。

如果其他人面临这样的问题,它们是单独的问题,应该被这样对待。 Material 1.1 的升级引入了新的默认值 - 而不是错误。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM