活动与AppCompatActivity:UI的差异

时间:2018-08-14 17:12:53

标签: android android-activity appcompatactivity

我正在开发一个Android应用程序。在某些情况下,我使用活动,在其他情况下,则使用AppCompatActivity。尽管我注意到一件事:

让我们以此类为例:

public class LoginActivity extends Activity {
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);

        if (android.os.Build.VERSION.SDK_INT >= Build.VERSION_CODES.LOLLIPOP) {
            setTheme( android.R.style.Theme_Material_Dialog_NoActionBar_MinWidth);
        }
    }
}

在这种情况下,输出是所需的输出:
enter image description here

当我将扩展类从Activity更改为AppCompatActivity时,输出将更改为:
enter image description here

为什么会这样?

2 个答案:

答案 0 :(得分:0)

AppCompatActivity-为较早的设备提供“材质”颜色主题,小部件着色和应用栏支持。使用此类要求您使用Theme.AppCompat主题以实现一致的视觉呈现。

有关更多信息,请查看以下网址:https://developer.android.com/topic/libraries/support-library/features#v7-appcompat

简而言之:AppCompact活动使用了主题,为何会对其进行更改

活动将没有操作栏,因为默认情况下AppCompactActivity将具有操作栏。

答案 1 :(得分:0)

经过长时间的研究,我认为这是一个bug或Android主题决定将深色主题的对话框也保持白色。问题在于属性colorBackground似乎不在指向{{1}的background_material_dark上。

这是我的解决方法:
将以下信息添加到您的颜色中:

@color/material_grey_850

并进行设置。就我而言:

<color name="background_material_dark_public">@color/material_grey_850</color>