Activity 与 AppCompatActivity:差异 UI
Activity vs AppCompatActivity: Difference in UI
我正在开发 Android 应用程序。在某些情况下,我使用 Activity,而在其他情况下,我使用 AppCompatActivity。虽然我注意到一件事:
让我们以这个 class 为例:
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);
}
}
}
在这种情况下,输出是所需的:
当我将扩展 class 从 Activity
更改为 AppCompatActivity
时,输出更改为:
为什么会这样?
AppCompatActivity - 为早期设备提供 Material 颜色主题、小部件着色和应用栏支持。使用此 class 需要您使用 Theme.AppCompat 主题以实现一致的视觉呈现。
有关详细信息,请查看此 url:https://developer.android.com/topic/libraries/support-library/features#v7-appcompat
简单地说:AppCompact activity 使用 Theme 来改变它的原因
Activity 不会有操作栏,而 AppCompactActivity 默认会有操作栏。
经过长时间的研究,我认为这是一个错误,或者 Android 主题决定为深色主题也将对话框保持为白色。问题是属性 colorBackground
似乎不在 background_material_dark
上,它指向 @color/material_grey_850
.
这是我的解决方案:
添加以下颜色:
<color name="background_material_dark_public">@color/material_grey_850</color>
并设置它。就我而言:
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.LOLLIPOP) {
activity.setTheme(android.R.style.Theme_Material_Dialog_NoActionBar_MinWidth);
int color = ResourcesCompat.getColor(activity.getResources(), R.color.background_material_dark_public, null); //without theme
activity.findViewById(android.R.id.content).setBackgroundColor(color);
}
我正在开发 Android 应用程序。在某些情况下,我使用 Activity,而在其他情况下,我使用 AppCompatActivity。虽然我注意到一件事:
让我们以这个 class 为例:
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);
}
}
}
在这种情况下,输出是所需的:
当我将扩展 class 从 Activity
更改为 AppCompatActivity
时,输出更改为:
为什么会这样?
AppCompatActivity - 为早期设备提供 Material 颜色主题、小部件着色和应用栏支持。使用此 class 需要您使用 Theme.AppCompat 主题以实现一致的视觉呈现。
有关详细信息,请查看此 url:https://developer.android.com/topic/libraries/support-library/features#v7-appcompat
简单地说:AppCompact activity 使用 Theme 来改变它的原因
Activity 不会有操作栏,而 AppCompactActivity 默认会有操作栏。
经过长时间的研究,我认为这是一个错误,或者 Android 主题决定为深色主题也将对话框保持为白色。问题是属性 colorBackground
似乎不在 background_material_dark
上,它指向 @color/material_grey_850
.
这是我的解决方案:
添加以下颜色:
<color name="background_material_dark_public">@color/material_grey_850</color>
并设置它。就我而言:
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.LOLLIPOP) {
activity.setTheme(android.R.style.Theme_Material_Dialog_NoActionBar_MinWidth);
int color = ResourcesCompat.getColor(activity.getResources(), R.color.background_material_dark_public, null); //without theme
activity.findViewById(android.R.id.content).setBackgroundColor(color);
}