标签: android-appcompat

Android Lollipop,AppCompat ActionBar自定义视图不占用整个屏幕宽度

所以,我刚刚将我的代码库更新为Lollipop,而且我遇到了Action Bar的问题.我正在使用AppCompat和ActionBarActivity,并为自定义视图充气.似乎自定义视图不再占据屏幕的整个宽度,在左侧留下一条细条

建筑用19 过去的样子

建筑用21 它看起来现在的样子

这是我用来设置Action Bar的代码.有人有主意吗?

final ActionBar actionBar = getSupportActionBar();
if(actionBar != null) {
    actionBar.setDisplayHomeAsUpEnabled(false);
    actionBar.setDisplayShowHomeEnabled(false);
    actionBar.setDisplayShowTitleEnabled(false);
    actionBar.setDisplayShowCustomEnabled(true);
    actionBar.setNavigationMode(ActionBar.NAVIGATION_MODE_STANDARD);
    actionBar.setCustomView(R.layout.action_bar_content_search_custom_view);
    actionBar.setBackgroundDrawable(null);
    // actionBar.setStackedBackgroundDrawable(null);
    TextView title = (TextView) actionBar.getCustomView().findViewById(R.id.action_bar_title);
    title.setText(R.string.youtube);
    ImageView back = (ImageView) actionBar.getCustomView().findViewById(R.id.action_bar_back);
    back.setOnClickListener(new OnClickListener() {
        @Override
        public void onClick(View v) {
            finish();
        }
    });
}
Run Code Online (Sandbox Code Playgroud)

编辑

取出自定义视图并更改背景现在占用整个宽度.问题是,我们如何让CustomView占用ActionBar的整个宽度?

android android-appcompat android-actionbar android-5.0-lollipop

96
推荐指数
4
解决办法
5万
查看次数

AppCompatActivity.onCreate只能在同一个库组中调用

升级到appcompat后,25.1.0我开始收到有线错误.

在我的代码中:

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
Run Code Online (Sandbox Code Playgroud)

我得到lint错误:

AppCompatActivity.onCreate can only be called from within the same library group (groupId=com.android.support)

如何防止这种行为?

android android-appcompat android-lint

94
推荐指数
3
解决办法
4万
查看次数

Android透明状态栏和操作栏

我已经对这个主题做了一些研究,我找不到一个完整的解决方案,所以,一步一步,经过一些反复试验,我终于找到了如何实现这些结果:透明或有色ActionbarStatusbar.请看下面的答案.

android android-appcompat android-actionbar android-toolbar android-statusbar

93
推荐指数
1
解决办法
11万
查看次数

在Android 5.0上的AppCompat CardView上设置XML高程

根据我的理解,在预览阶段的早期,似乎没有办法只在CardView没有Java的黑客攻击的情况下在XML中设置高程.既然官方发布已经发布,有没有办法在XML中执行此操作而无需编写Java代码来设置高程?

我试过card_view:cardElevation没有效果.我曾经想过当我使用5.0的模拟器时一切都很好.但是现在我在我的实际设备上使用正式版本,我的所有内容都CardView消失了

Pre Lollipop,效果很好.

这是我的完整xml

<?xml version="1.0" encoding="utf-8"?>
<android.support.v7.widget.CardView xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:card_view="http://schemas.android.com/apk/res-auto"
    android:orientation="horizontal"
    android:layout_width="match_parent"
    android:id="@+id/cv1"
    card_view:cardElevation="4dp"
    android:layout_margin="6dp"
    card_view:cardCornerRadius="3dp"
    android:layout_height="match_parent">
Run Code Online (Sandbox Code Playgroud)

android android-appcompat android-cardview android-elevation

92
推荐指数
3
解决办法
8万
查看次数

在Appcompat 21中更改工具栏颜色

我正在测试新的Appcompat 21 Material Design功能.因此我创建了一个这样的工具栏:

<android.support.v7.widget.Toolbar xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
android:id="@+id/activity_my_toolbar"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:minHeight="?attr/actionBarSize"
android:background="?attr/colorPrimary"
app:theme="@style/ThemeOverlay.AppCompat.ActionBar"/>
Run Code Online (Sandbox Code Playgroud)

并将其包含在我的主布局文件中.

然后我将它设置为supportActionBar:

Toolbar toolBar = (Toolbar)findViewById(R.id.activity_my_toolbar);
setSupportActionBar(toolBar);
Run Code Online (Sandbox Code Playgroud)

它工作,但不知何故,我无法弄清楚如何自定义工具栏.它是灰色的,上面的文字是黑色的.我该如何更改背景和文字颜色?

我已经完成了这个指示:

http://android-developers.blogspot.de/2014/10/appcompat-v21-material-design-for-pre.html

我有什么要改变颜色的?

 <style name="AppTheme" parent="Theme.AppCompat.Light">
    <item name="android:windowActionBar" tools:ignore="NewApi">false</item>
    <item name="windowActionBar">false</item>
</style>
Run Code Online (Sandbox Code Playgroud)

编辑:

我可以通过在主题中添加以下代码行来更改背景颜色:

<item name="colorPrimary">@color/actionbar</item>
<item name="colorPrimaryDark">@color/actionbar_dark</item>
Run Code Online (Sandbox Code Playgroud)

但它们不会影响文字颜色.我错过了什么?我宁愿选择白色文字和白色菜单按钮,而不是黑色文字和黑色菜单按钮:

在此输入图像描述

android android-appcompat android-actionbar android-actionbar-compat android-toolbar

87
推荐指数
5
解决办法
13万
查看次数

如何以编程方式添加按钮色调

在新的AppCompat库中,我们可以通过这种方式对按钮进行着色:

<Button
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    android:text="@string/follow"
    android:id="@+id/button_follow"
    android:backgroundTint="@color/blue_100"
    />
Run Code Online (Sandbox Code Playgroud)

如何在我的代码中以编程方式设置按钮的色调?我基本上试图根据一些用户输入实现按钮的条件着色.

android android-appcompat

87
推荐指数
13
解决办法
10万
查看次数

使用官方设计库中的FloatingActionButton进行InflateException

我使用FloatingActionButtonGoogle支持设计库中的官员收到了一个错误.

这是我的LogCat.

android.view.InflateException: Binary XML file line #34: Error inflating class android.support.design.widget.FloatingActionButton
at android.view.LayoutInflater.createView(LayoutInflater.java:633)
at android.view.LayoutInflater.createViewFromTag(LayoutInflater.java:743)
at android.view.LayoutInflater.rInflate(LayoutInflater.java:806)
at android.view.LayoutInflater.rInflate(LayoutInflater.java:809)
at android.view.LayoutInflater.inflate(LayoutInflater.java:504)
at de.robv.android.xposed.XposedBridge.invokeOriginalMethodNative(Native Method)
at de.robv.android.xposed.XposedBridge.handleHookedMethod(XposedBridge.java:655)
at android.view.LayoutInflater.inflate(Unknown Source)
at android.view.LayoutInflater.inflate(LayoutInflater.java:414)
at ---.---.com.---.SubCategoryFragment.onCreateView(SubCategoryFragment.java:47)
at android.support.v4.app.Fragment.performCreateView(Fragment.java:1789)
at android.support.v4.app.FragmentManagerImpl.moveToState(FragmentManager.java:955)
at android.support.v4.app.FragmentManagerImpl.moveToState(FragmentManager.java:1138)
at android.support.v4.app.BackStackRecord.run(BackStackRecord.java:740)
at android.support.v4.app.FragmentManagerImpl.execPendingActions(FragmentManager.java:1501)
at android.support.v4.app.FragmentManagerImpl$1.run(FragmentManager.java:458)
at android.os.Handler.handleCallback(Handler.java:739)
at android.os.Handler.dispatchMessage(Handler.java:95)
at android.os.Looper.loop(Looper.java:135)
at android.app.ActivityThread.main(ActivityThread.java:5221)
at java.lang.reflect.Method.invoke(Native Method)
at java.lang.reflect.Method.invoke(Method.java:372)
at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:899)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:694)
at de.robv.android.xposed.XposedBridge.main(XposedBridge.java:117)
Caused by: java.lang.reflect.InvocationTargetException
at java.lang.reflect.Constructor.newInstance(Native Method)
at java.lang.reflect.Constructor.newInstance(Constructor.java:288)
at android.view.LayoutInflater.createView(LayoutInflater.java:607)
... 24 more …
Run Code Online (Sandbox Code Playgroud)

android android-appcompat inflate-exception floating-action-button android-support-design

87
推荐指数
4
解决办法
6万
查看次数

使用?attr/selectableItemBackground作为背景时,如何修改波纹颜色?

我已经看到了一些SO问题,他们提供了一些可能的方法来实现我想要的.例如:

  1. colorControlHighlight在styles.xml中使用属性.

    这是我的styles-v21.xml:

    <style name="SelectableItemBackground">
        <item name="android:colorControlHighlight">#5677FC</item>
        <item name="android:background">?attr/selectableItemBackground</item>
    </style>
    
    Run Code Online (Sandbox Code Playgroud)

    我的小部件:

    <TextView
        android:id="@+id/tv_take_photo_as_bt"
        android:layout_width="280dp"
        android:layout_height="48dp"
        android:text="@string/act_take_photo"
        style="@style/SelectableItemBackground"/>
    
    Run Code Online (Sandbox Code Playgroud)

    它不起作用.我还尝试添加parent="Theme.AppCompat到"SelectableItemBackground"样式,或者更改为colorControlHighlight(no android: prefix)"或更改为?android:attr/selectableItemBackground,既没有用.

  2. backgroundTint在布局中使用属性.

    所以我加入android:backgroundTint="#5677FC"我的TextView.还是没用.然后我试着改变android:backgroundTintMode,src_in并且src_atop,他们永远不会有所作为.

那么,当我?attr/selectableItemBackground用作背景时,如何改变波纹颜色.我只关注棒棒糖及以上.先感谢您!

android android-appcompat android-layout material-design android-5.0-lollipop

86
推荐指数
5
解决办法
5万
查看次数

在AppCompat工具栏上的MenuItem着色

当我使用AppCompat库中的drawables 作为我的Toolbar菜单项时,着色按预期工作.像这样:

<item
    android:id="@+id/action_clear"
    android:icon="@drawable/abc_ic_clear_mtrl_alpha"  <-- from AppCompat
    android:title="@string/clear" />
Run Code Online (Sandbox Code Playgroud)

但是如果我使用自己的drawables,或者实际上甚至将drawables从AppCompat库中复制到我自己的项目中,它根本就不会染色.

<item
    android:id="@+id/action_clear"
    android:icon="@drawable/abc_ic_clear_mtrl_alpha_copy"  <-- copy from AppCompat
    android:title="@string/clear" />
Run Code Online (Sandbox Code Playgroud)

是否有一些特殊的魔法AppCompat Toolbar,只有那个图书馆的色彩抽奖?有没有办法让我的自己的drawables工作?

在API Level 19设备上使用compileSdkVersion = 21和运行此操作targetSdkVersion = 21,并使用其中的所有内容AppCompat

abc_ic_clear_mtrl_alpha_copyabc_ic_clear_mtrl_alphapng 的精确副本AppCompat

编辑:

着色基于我android:textColorPrimary在主题中设定的值.

例如,<item name="android:textColorPrimary">#00FF00</item>可以给我一个绿色的色调的颜色.

截图

着色使用AppCompat中的drawable按预期工作 着色使用AppCompat中的drawable按预期工作

着色不适用于从AppCompat复制的drawable 着色不适用于从AppCompat复制的drawable

android tint toolbar android-appcompat

85
推荐指数
7
解决办法
5万
查看次数

状态栏变为白色,并且不显示其背后的内容

我在Marshmallow上尝试AppCompat.我希望有一个透明的状态栏,但它会变成白色.我已经尝试了几个解决方案,但它们对我不起作用(透明状态栏不能使用windowTranslucentNavigation ="false",Lollipop:绘制后面的statusBar,其颜色设置为透明).这是相关的代码.

我的styles.xml

<style name="Bacon" parent="Theme.Bacon"/>

<style name="Theme.Bacon" parent="Theme.AppCompat.Light.NoActionBar">
    <item name="colorPrimary">@color/theme_primary</item>
    <item name="colorPrimaryDark">@color/theme_primary_dark</item>
    <item name="colorAccent">@color/theme_accent</item>
    <item name="windowActionBar">false</item>
    <item name="windowActionBarOverlay">true</item>
    <item name="windowNoTitle">true</item>
    <item name="android:windowBackground">@color/background_material_light</item>  
</style>

<style name="Theme.Bacon.Detail" parent="Bacon"/>
Run Code Online (Sandbox Code Playgroud)

V21

<style name="Bacon" parent="Theme.Bacon">
    <item name="android:windowDrawsSystemBarBackgrounds">true</item>
</style>

<style name="Theme.Bacon.Detail" parent="Bacon">
    <item name="android:statusBarColor">@android:color/transparent</item>
</style>
Run Code Online (Sandbox Code Playgroud)

活动

<FrameLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:fitsSystemWindows="true">

<android.support.v4.view.ViewPager
    android:id="@+id/pager"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:fitsSystemWindows="true" />

</FrameLayout>
Run Code Online (Sandbox Code Playgroud)

分段

<android.support.design.widget.CoordinatorLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:fitsSystemWindows="true">

<android.support.design.widget.AppBarLayout
    android:id="@+id/appbar"
    android:layout_width="match_parent"
    android:layout_height="192dp"
    android:fitsSystemWindows="true"
    android:theme="@style/ThemeOverlay.AppCompat.Dark.ActionBar">

    <android.support.design.widget.CollapsingToolbarLayout
        android:id="@+id/collapsing_toolbar"
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        android:fitsSystemWindows="true"
        app:contentScrim="?attr/colorPrimary"
        app:expandedTitleMarginBottom="32dp"
        app:expandedTitleMarginEnd="64dp"
        app:expandedTitleMarginStart="48dp"
        app:layout_scrollFlags="scroll|exitUntilCollapsed" …
Run Code Online (Sandbox Code Playgroud)

android android-appcompat android-support-library androiddesignsupport android-6.0-marshmallow

84
推荐指数
12
解决办法
6万
查看次数