小编Gae*_* L.的帖子

android:elevation 应用于工具栏及其标题

我使用一个非常简单的样式来格式化我的工具栏,我使用 android:elevation 在工具栏下显示一个阴影,如下所示:

<style
    name="AppToolbarTheme"
    parent="AppTheme">

    <item name="android:background">@color/colorPrimary</item>
    <item name="android:titleTextColor">@android:color/white</item>
    <item name="android:elevation">4dip</item>
</style>
Run Code Online (Sandbox Code Playgroud)

我只是这样应用它:

<Toolbar
    android:id="@+id/main_toolbar"
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    android:theme="@style/AppToolbarTheme"/>
Run Code Online (Sandbox Code Playgroud)

阴影显示在我想要的工具栏下,但是它也以某种方式应用于工具栏的标题,看起来很奇怪:

在此处输入图片说明

android

5
推荐指数
1
解决办法
969
查看次数

Android状态栏在启动屏幕中隐藏/更改颜色

我按照此教程在我的应用程序中实现了无布局的启动屏幕:https : //www.bignerdranch.com/blog/splash-screens-the-right-way/

我设法为MainActivity更改状态栏的颜色,甚至使用主题将其更改为全屏显示。但是,我尝试过的所有方法都无法与初始屏幕一起使用。也许是因为它不使用布局,而是直接使用可绘制对象作为背景:

<style
    name="AppTheme"
    parent="@android:style/Theme.Material.Light.NoActionBar">

    <item name="colorPrimary">@color/colorPrimary</item>
    <item name="colorPrimaryDark">@color/colorPrimaryDark</item>
    <item name="colorAccent">@color/colorAccent</item>
    <item name="android:textColor">@color/textColor</item>
    <item name="iconColor">@color/iconColor</item>
    <item name="android:statusBarColor">@color/colorPrimaryDark</item>
    <item name="drawerArrowStyle">@style/DrawerArrowStyle</item>
</style>

<style
    name="SplashTheme"
    parent="AppTheme">

    <item name="android:windowBackground">@drawable/splash_screen</item>
</style>
Run Code Online (Sandbox Code Playgroud)

我尝试使用全屏主题,在活动使用的主题中设置android:statusBarColor,还尝试了以下两个代码:

View decorView = getWindow().getDecorView();
int uiOptions = View.SYSTEM_UI_FLAG_FULLSCREEN;
decorView.setSystemUiVisibility(uiOptions);

Window window = getWindow();
window.addFlags(WindowManager.LayoutParams.FLAG_DRAWS_SYSTEM_BAR_BACKGROUNDS);
window.setStatusBarColor(ContextCompat.getColor(this, android.R.color.transparent));
Run Code Online (Sandbox Code Playgroud)

这4种方法适用于我的正常活动,但不适用于初始屏幕。有什么我可以做的吗?

编辑:我的目标是minSdkVersion 23

android

0
推荐指数
1
解决办法
3072
查看次数

Java Comparable 继承

我有一个基本的BusinessObject抽象类,它通过比较它们的长 id字段来实现 Comparable 。现在想象我用Person扩展它,然后我用Worker扩展 Person 。所以我们有:

业务对象 < 人员 < 工人

所以现在我覆盖了 Person(比较名称)和 Worker(比较工作名称,然后是人员名称)中业务对象中的 compareTo(BusinessObject)。

现在我做这样的事情:

List<BusinessObject> collection = new ArrayList<>();
collection.add(new Worker(1L, "Steve", "janitor"));
collection.add(new Worker(2L, "Mark", "plumber"));
collection.add(new Person(3L, "Dave"));

Collections.sort(collection);
System.out.println(collection);
Run Code Online (Sandbox Code Playgroud)

通过记录,我可以看到进行的调用:

  1. Worker.compareTo()
  2. Person.compareTo()

所以,这意味着排序方法是混合的,这显然是不好的。那么什么是使用继承实现 Comparable 的正确方法,以便调用的方法取决于集合的泛型类型:

  1. 如果集合是一个列表,那么总是使用 BusinessObject.compareTo()
  2. 如果集合是一个列表,那么总是使用 Person.compareTo()
  3. 如果集合是一个列表,那么总是使用 Worker.compareTo()

这是我的代码:

public abstract class BusinessObject implements HasId, HasText, Comparable<BusinessObject> {
    protected @Nullable Long id;

    public BusinessObject(@Nullable Long id) {
        this.id = id;
    }

    @Override
    public @Nullable …
Run Code Online (Sandbox Code Playgroud)

java comparable

0
推荐指数
1
解决办法
1729
查看次数

标签 统计

android ×2

comparable ×1

java ×1