GVKun编程网logo

android – appcompat 21徽标作为后退按钮(android 图标按钮)

1

以上就是给各位分享android–appcompat21徽标作为后退按钮,其中也会对android图标按钮进行解释,同时本文还将给你拓展5张图片解决androidstudio报错:Failedtore

以上就是给各位分享android – appcompat 21徽标作为后退按钮,其中也会对android 图标按钮进行解释,同时本文还将给你拓展5张图片解决android studio报错:Failed to resolve: com.android.support:appcompat-v7:29、Andriod Studio 解决问题 Failed to resolve: com.android.support:appcompat-v7:28.+、Android Jetpack 之 AppCompat - Actionbar 篇、Android Material 和 appcompat Manifest 合并失败等相关知识,如果能碰巧解决你现在面临的问题,别忘了关注本站,现在开始吧!

本文目录一览:

android – appcompat 21徽标作为后退按钮(android 图标按钮)

android – appcompat 21徽标作为后退按钮(android 图标按钮)

更新后sdk到21版本徽标不显示.我使用以下代码显示徽标:

actionBar.setdisplayShowHomeEnabled(true);
actionBar.setdisplayHomeAsUpEnabled(true);
actionBar.setIcon(R.drawable.ic_launcher);

代码看起来:
http://i.stack.imgur.com/fAWIx.png

这段代码:

actionBar.setdisplayShowHomeEnabled(true);
actionBar.setIcon(R.drawable.ic_launcher);

看起来:
http://i.stack.imgur.com/hkYqa.png

这段代码:

actionBar.setdisplayHomeAsUpEnabled(true);

看起来:
http://i.stack.imgur.com/Ssw2A.png

我的徽标不显示为后退按钮.

我怎么在这里做旧风格? http://i.stack.imgur.com/BKOz4.png

注意:抱歉,我没有注意到类似的问题. =(

解决方法

按 Toolbar documentation:

  • A title and subtitle. The title should be a signpost for the Toolbar’s current position in the navigation hierarchy and the content contained there. The subtitle,if present should indicate any extended information about the current content. If an app uses a logo image it should strongly consider omitting a title and subtitle.

In modern Android UIs developers should lean more on a visually distinct color scheme for toolbars than on their application icon. The use of application icon plus title as a standard layout is discouraged on API 21 devices and newer.

但是,如果您想要一个应用程序图标,setLogo()确实是正确的方法.

5张图片解决android studio报错:Failed to resolve: com.android.support:appcompat-v7:29

5张图片解决android studio报错:Failed to resolve: com.android.support:appcompat-v7:29

android studio已经问世多年了,但是对于刚接触android studio的小伙伴来说,经常会遇到这样的报错:Failed to resolve: com.android.support:appcompat-v7:29 ,如图所示:

我今天新建了一个安卓项目也出现了这样子的错误,遇到这样的问题不要慌,看完下面的步骤就可以解决了!

第一步:报错了,先去查看以下自己sdk tool 的版本是多少,通过下图可以查看到我的sdk tools的版本号为26.1.1

第二步,接下来就要 看看SDK 构建工具的版本了,具体查看步骤如图所示:

我找到了sdk 路径是在D盘,我就安装了26.0.1 跟30.0.2 这两个,如图所示:

然后,我们到打开app里面的build.gradlle文件瞧瞧,更改里面的几个地方就可以了,将compileSdkVersion ,targetSdkVersion的版本号改为跟sdk build tools就好了,保持26这个一样的版本就了。l

以下这个地方也要改成26(同样是在app 里面的build.gradle文件里面),如图所示:

最后,点击Try again 就完成了,重新编译下就不会报:Failed to resolve: com.android.support:appcompat-v7:29 这个错误了。

下次遇到什么疑难问题,不要慌,可以多找找度娘,一定会解决的。好了,看看我运行起来的hello world 吧! 你遇到过这个的异常吗?你是怎么解决的,欢迎留言一起分享!













Andriod Studio 解决问题 Failed to resolve: com.android.support:appcompat-v7:28.+

Andriod Studio 解决问题 Failed to resolve: com.android.support:appcompat-v7:28.+

OSC 请你来轰趴啦!1028 苏州源创会,一起寻宝 AI 时代

原因:项目建成之后,build.gradle 中的版本不对,和安装的 SDK 版本不一致导致的。

解决办法:修改版本与安装的版本一致

查看 SDK 版本:

Android Jetpack 之 AppCompat - Actionbar 篇

Android Jetpack 之 AppCompat - Actionbar 篇

今天我们来聊一聊有关 AppCompat,作为 Android Jetpack 系列文章的开篇。说到 Android Jetpack,我们先看一下这张图: 从图中我们可以看到,整个 Android Jetpack 分为了四大部分,而我们今天要讲述的就是 Foundation 中的 AppCompat 小节,官方将该部分翻译为 “基础”。 Google 官方网站: https://developer.android.com/jetpack 按照 Google 官方的描述,AppCompat 就是指 v7 appcompat 库。

“This library adds support for the Action Bar user interface design pattern. This library includes support for material design user interface implementations.”

意思是:此库添加了对操作栏用户界面设计模式的支持。这个库包括对 Material Design 用户界面实现的支持。也就是说,我们可以借助该库,对 Material Design 有更便捷和兼容性更好的实现。 进入 AppCompat 章节后,我们发现它又被分为了 4 个部分,这 4 个部分被称为 “key class”,也就是重点类,它们分别是:

  • ActionBar:提供 Actionbar 用户界面模式的实现;
  • AppCompatActivity:添加可用作使用支持库操作栏实现的 Activity 的基类;
  • AppCompatDialog:添加一个可用作 AppCompat 主题的 Dialog 的基类;
  • ShareActionProvider:添加对可包含在 ActionBar 中的标准化共享操作(如电子邮件或发布到社交应用程序)的支持。

想要使用这些类,我们需要添加 v7 支持库。 到现在为止,支持库的最新版本是 28,添加的库名称和版本如下:

com.android.support:appcompat-v7:28.0.0

今天我们就先来聊一聊 ActionBar,也是这里面最为复杂的一个部分。 依稀记得,伴随着 Google I/O 2014 的召开,早在 Android 5.0 的时代,Google 官方推出了 ToolBar 组件,在那之后,ToolBar 就登上了历史舞台,扮演着重要的角色。之前我在 CSDN 上面也发表过相关主题的文章,因为发布的时机刚好是 ToolBar 登场之际,所以获得了很多的阅读量。快 5 年过去了,回头再看那几篇连载,感觉文笔很是稚嫩。今天借着讲述 Jetpack,再次聊聊 ToolBar 那些事,相信你我都会有新的收获。

首先解决疑问:

  1. 问:既然有了 ActionBar,为何还要用 ToolBar? 答:使用 AppCompat Toolbar 能兼容更广泛的设备(ActionBar 要求最低 Android 3.0,ToolBar 要求最低 Android 2.1,但只有 Android 5.0 及以上才能在不使用 AppCompat 兼容包的前提下支持 Material Design),以及各式各样的自定义需求。

  2. 问:ToolBar 上面都应该包含哪些内容? 答:根据 Google 的指导,应用栏区域应具备以下要素:1)一个专用区域,可以标识您的应用并指示用户在应用中的位置;2)以可预测的方式访问搜索等重要操作;3)支持导航和视图切换(通过标签页或下拉列表)。

一、添加 ToolBar 想要添加一个 ToolBar,总共 3 步走: 1. 更改 application 主题样式,操作对象:styles.xml。 对于新建的 Android 项目,AndroidManifest.xml 中已经定义了所使用的 theme,即:

android:theme="@style/AppTheme"

此时,我们修改 styles.xml 文件即可,将默认的继承值改掉,如下所示:

<style name="AppTheme" parent="Theme.AppCompat.Light.NoActionBar">

2. 在 Activity 布局中添加 ToolBar,操作对象:layout 布局文件

<android.support.v7.widget.Toolbar
    android:id="@+id/activity_main_tb"
    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" />

对高度掌握不好火候的同学,直接如上使用 ActionBar 的高度就可以了。 android:evevation 指 “仰角”,这部分知识请参考: https://developer.android.com/training/material/shadows-clipping 这里就不再赘述了。 如果你的项目已经迁移到 Android X,你的布局文件代码片应该是:

<androidx.appcompat.widget.Toolbar
    android:id="@+id/activity_main_tb"
    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" />

3. 在 Activity 类中找到 ToolBar,并应用它,操作对象:Activity 类 这一步并不复杂,参考普通的 Android 控件。类似地,我们通过 findViewById () 找到 ToolBar,并做执行一些设定,即可完成该步骤,示例如下:

private Toolbar topTb;
topTb = findViewById(R.id.activity_main_tb);        
setSupportActionBar(topTb);

一旦我们 setSupportActionBar () 后,日后我们就可以通过 getSupportActionBar () 方法来获取 ToolBar 实例,也可以使用兼容包提供的 ActionBar 的各种 API 方法了。 到此,我们就完成了 ToolBar 的添加,还算简单吧?

二、ToolBar 外观的自定义 不出意外的话,我们运行的结果将会和下图类似: 大绿底,大黑字,实在不怎么好看。 那么,如果我们想要自定义配色方案,该如何做呢?参考下图: 这些值我们都可以在 color.xml 中定义,并在 styles.xml 中引用。下图是一个重新定义配色方案后的截图: 相关的代码片: color.xml

<?xml version="1.0" encoding="utf-8"?>
<resources>
    <color name="colorPrimary">#002FA7</color>
    <color name="colorPrimaryDark">#001F67</color>
    <color name="colorAccent">#003FB7</color>
    <color name="textColorPrimary">#FFFFFF</color>
</resources>

styles.xml

<style name="AppTheme" parent="Theme.AppCompat.Light.NoActionBar">
    <item name="colorPrimary">@color/colorPrimary</item>
    <item name="colorPrimaryDark">@color/colorPrimaryDark</item>
    <item name="colorAccent">@color/colorAccent</item>
    <item name="android:textColorPrimary">@color/textColorPrimary</item>
</style>

细心的读者会发现,后面的截图中,右上角多了菜单项,这又是如何实现的呢?我们继续往后看。

三、给 ToolBar 增加动作 首先我们来看看如何给 ToolBar 增加菜单,我们依然分为 3 步完成。 1. 编写菜单 xml 文件,操作对象:menu 文件夹下的菜单 xml 文件 这里我添加了两个菜单,如上图所示,一个隐藏在 “更多” 里,另一个是搜索。如下代码片所示:

<?xml version="1.0" encoding="utf-8"?>
<menu xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:app="http://schemas.android.com/apk/res-auto">

    <item
        android:id="@+id/menu_main_info"
        android:title="@string/menu_main_activity_info"
        app:showAsAction="never" />

    <item
        android:id="@+id/menu_main_search"
        android:title="@string/menu_main_activity_search"
        app:actionViewClass="android.support.v7.widget.SearchView"
        app:showAsAction="always" />
</menu>

如上,我们可以看到有两个 item,分别对应 Info 和搜索,我们使用 "app:showAsAction" 的值来控制这个菜单是否显示,常见的值有 always,ifRoom,never。从字面上也很好理解,这里就不多解释了。

2. 接下来是 Java 代码片段:

private SearchView tbSearchSv;

@Override
public boolean onCreateOptionsMenu(Menu menu) {
    getMenuInflater().inflate(R.menu.main_activity_menu, menu);
    MenuItem searchItem = menu.findItem(R.id.menu_main_search);
    tbSearchSv = (SearchView) searchItem.getActionView();
    return super.onCreateOptionsMenu(menu);
}

细心的朋友会发现有这一行:

app:actionView

它是做什么的呢? 对了!它就是搜索栏,是原生的搜索栏。所以某些情况下,这个搜索栏是不用自己去实现的,系统已经给我们提供了 SearchView! 典型的 APP:网易云音乐、知乎上方的搜索都是这样的。

3. 为菜单设置监听器,我们先来看最普通的 Info 按钮,我们只需在 Java 代码中 Override 指定的方法就可以了,如下所示:

@Override
public boolean onOptionsItemSelected(MenuItem item) {
    switch (item.getItemId()) {
        case R.id.menu_main_info:
            Toast.makeText(MainActivity.this, R.string.menu_main_activity_info, Toast.LENGTH_LONG).show();
            break;
    }
    return super.onOptionsItemSelected(item);
}

对于搜索栏,首先我们想到的是,如何获取用户输入的内容呢? 其实很简单,玄机在于 SearchView,只需对 SearchView 添加监听器就可以了。

tbSearchSv.setOnQueryTextListener(new SearchView.OnQueryTextListener() {
    @Override
    public boolean onQueryTextSubmit(String s) {
        
        return false;
    }

    @Override
    public boolean onQueryTextChange(String s) {
        
        return false;
    }
});

这里要注意,设置监听器前,要确保 SearchView(这里的 tbSearchSv)已经被实例化,否则,会出现空指针异常崩溃。 关于 SearchView,还有一写额外的设置,比如:

// 设置提交按钮是否可见(默认不可见)
tbSearchSv.setSubmitButtonEnabled(true);

// 设置左侧是否显示搜索图标(默认不可见)
tbSearchSv.setIconifiedByDefault(false);

更多可使用的 API 请参考官方文档: https://developer.android.google.cn/reference/android/widget/SearchView

不过,我们这里还需要做最后一点善后。如果你是一路下来照着本篇文章敲代码的话,在搜索框打开的情况下按一下返回键,你期待的是什么?是不是取消搜索操作,停留在当前界面?然而实际上是…… 退出了 APP。 所以我们这里要对返回键的默认动作做一个 “拦截”,具体可参考如下代码片:

@Override
public boolean onKeyUp(int keyCode, KeyEvent event) {
    switch (keyCode) {
        case KeyEvent.KEYCODE_BACK:
            if (!tbSearchSv.isIconified()) {
                tbSearchSv.setIconified(true);
                return true;
            }
            break;
    }
    return super.onKeyUp(keyCode, event);
}

这里 SearchView 的 isIconfied () 方法可以返回当前的 SearchView 展开状态。

四、返回上一层

ToolBar 还有一个比较常见的功能就是左上角的返回按钮,提供返回上一层操作,很多的 APP 开发者都习惯于自定义一个 ImageButton 或类似的空间,然后使用美工提供的图像素材,设置监听器,写 Selector…… 一套下来,费时费力。 其实 Google 已经为开发者提供了现成的非常易用的返回逻辑处理。要实现这些处理,两步就搞定了。

1. 在 ToolBar 对象上启用返回钮

getSupportActionBar().setDisplayHomeAsUpEnabled(true);

这里注意,虽然之前将 ToolBar 通过 setSupportActionBar () 方式当做参数被 set 了一次,但是 ToolBar 类本身并不提供 setDisplayHomeAsUpEnabled () 方法,因此,我们还需要 getSupportActionBar (),先获取 ActionBar 对象,然后使用该对象,而不是直接使用 ToolBar 对象。

2. 在 AndroidManifest.xml 中定义要跳转的 Activity 如题,我们在 AndroidManifest.xml 中,对子 Activity 做处理,这里不要忘记兼容低版本的系统。

<activity
    android:name=".MainActivity"
    android:parentActivityName=".SecondActivity">
    <!-- 兼容 Android4.0 及以下版本-->
    <meta-data
        android:name="android.support.PARENT_ACTIVITY"
        android:value=".SecondActivity" />
</activity>

将 SecondActivity 改为入口 Activity,然后重新运行程序,将实现如下效果: 到此,关于 ToolBar 常见用法的梳理告一段落。源码请自取: https://github.com/wh1990xiao2005/JetpackDemo

我会在接下来的文章中,和大家分享关于 ToolBar 的剩余内容,以及 AppCompat 兼容包中的其他知识,希望对你我都有帮助。 共勉!

Android Material 和 appcompat Manifest 合并失败

Android Material 和 appcompat Manifest 合并失败

我有下一年级

dependencies {    implementation fileTree(dir: ''libs'', include: [''*.jar''])    implementation ''com.android.support:appcompat-v7:28.0.0-rc01''    implementation ''com.android.support.constraint:constraint-layout:1.1.2''    testImplementation ''junit:junit:4.12''    androidTestImplementation ''com.android.support.test:runner:1.0.2''    androidTestImplementation ''com.android.support.test.espresso:espresso-core:3.0.2''    implementation ''com.google.android.material:material:1.0.0-rc01''}

但是当我想构建应用程序时,我会得到下一个日志:

Manifest merger failed : Attribute application@appComponentFactory value=(android.support.v4.app.CoreComponentFactory) from [com.android.support:support-compat:28.0.0-alpha3] AndroidManifest.xml:22:18-91    is also present at [androidx.core:core:1.0.0-alpha3] AndroidManifest.xml:22:18-86 value=(androidx.core.app.CoreComponentFactory).    Suggestion: add ''tools:replace="android:appComponentFactory"'' to <application> element at AndroidManifest.xml:5:5-19:19 to override.

好吧!去 manifest 并执行它:

<?xml version="1.0" encoding="utf-8"?><manifest xmlns:android="http://schemas.android.com/apk/res/android"    xmlns:tools="http://schemas.android.com/tools"    package="ru.chopcode.myapplication">    <application        tools:replace="android:appComponentFactory"        android:allowBackup="true"        android:icon="@mipmap/ic_launcher"        android:label="@string/app_name"        android:roundIcon="@mipmap/ic_launcher_round"        android:supportsRtl="true"        android:theme="@style/AppTheme">    </application></manifest>

然后我在我的 Logcat 中收到此错误:

Manifest merger failed with multiple errors, see logs that I have Linked with it

答案1

小编典典

只需将依赖项中第一行和最后一行中的“rc01”更改为“alpha1”这对我有用

我们今天的关于android – appcompat 21徽标作为后退按钮android 图标按钮的分享已经告一段落,感谢您的关注,如果您想了解更多关于5张图片解决android studio报错:Failed to resolve: com.android.support:appcompat-v7:29、Andriod Studio 解决问题 Failed to resolve: com.android.support:appcompat-v7:28.+、Android Jetpack 之 AppCompat - Actionbar 篇、Android Material 和 appcompat Manifest 合并失败的相关信息,请在本站查询。

本文标签: