如何更改操作栏颜色并单击打开文件?

How to change the action bar color and open a file on click?

我现在正在为 Android 开发一个应用程序,但有两件事我不知道该怎么做。

  1. 我想根据用户的要求改变操作栏的颜色,所以我想动态改变它。我看到一些答案说我需要使用:

ActionBar bar = getActionBar();
bar.setBackgroundDrawable(new ColorDrawable(Color.parseColor("#004D40")));

但由于某些原因,它对我不起作用。

  1. 我已经在我的应用程序中添加了下载文件的选项,但我使用的是一种不寻常的方式,因此它不会在下载完成时创建通知。我想为我的用户提供一种访问该文件的简便方法。我可以创建一个单击时打开文件的按钮吗?

谢谢!

1) 为此,我建议您拥有 Example here 工具栏视图并将其设置为您的操作栏。只需在顶部添加此视图:

<android.support.v7.widget.Toolbar
android:id="@+id/my_toolbar"
android:layout_width="match_parent"
android:layout_height="?attr/actionBarSize"
android:background="?attr/colorPrimary"
android:elevation="4dp"
android:theme="@style/ThemeOverlay.AppCompat.ActionBar"
app:popupTheme="@style/ThemeOverlay.AppCompat.Light"/>

然后在Activity

 Toolbar myToolbar = (Toolbar) findViewById(R.id.my_toolbar);
 setSupportActionBar(myToolbar);

在此之后,您可以更改视图 myToolbar 中的所有内容。设置背景颜色等。它将起作用。仅使用 Actionbar 是过时且过时的方法。

2) 是的,您可以,这就像有意打开新的 Activity。 Android 有一些内置的 Intent Action Type 可以帮助您打开或查看特定文件,但是为此您需要知道您要处理的文件类型。

假设如果您有可以使用的文档类型分类的文件类型,

ACTION_OPEN_DOCUMENT 具有特定 MIME_TYPE(Android 4.4 或更高)

或者如果您要处理一些媒体文件 (Audio/Video)

可以使用,

ACTION_VIEW

要识别特定文件的MIME_TYPE,您可以使用函数

guessContentTypeFromName (String url)Link

getMimeTypeFromExtension(String extension)Link

希望这对您有所帮助:)

您不能更改颜色,因为您应该调用 getSupportActionBar() 并且它也适用于 api >11;

getSupportActionBar().setBackgroundDrawable(new ColorDrawable(getResources().getColor(android.R.color.black)‌​));

getSupportActionBar().setBackgroundDrawable(new ColorDrawable(Color.parseColor("#004D40")​));

关于你的第二个问题,我们需要更多信息和你下载文件的代码。您完全可以通过单击访问文件,但您需要知道文件类型和存储文件的目录以及目标 api 以检查运行时权限,例如

我建议你用你的所有代码和这个信息问另一个问题