标签: android-appcompat

自定义Android appcompat操作栏:如何删除v11 +设备上的底部边框

我正在使用Android appcompat库来创建自定义操作栏.这一切都有效.在不使用v11主题(值文件夹)的设备上,不显示底部边框,因为它不应该出现.但是当v11 +设备使用主题时(当然在values-v11文件夹中)有一个底部边框.它是一个薄的1dp类型边框.我有一个自定义背景应用于操作栏,这一切都适用于版本<v11,只是在v11 +设备上添加了一个恼人的额外底部边框; - ]

现在我通过另一篇SO文章发现用户使用ActionBarSherlock,基本主题需要是Theme.X而不是theme.X.Light.x来解决这个问题(没有解释为什么).我应用了这个相同的逻辑(我使用的是android的appcompat,而不是sherlock)并且它可以用于删除边框但是其他样式问题出现了单选按钮等,采用非轻量级主题.所以我想将基本主题保持为'Theme.AppCompat.Light'并摆脱操作栏上的底部边框.同样,它不会出现在设备<v11上.

屏幕截图(Theme.AppCompat.Light/Theme.AppCompat):

http://i39.tinypic.com/2m66d1v.png

http://i42.tinypic.com/27zvtec.png

我的主题(在值文件夹中减去android前置相同):

    <?xml version="1.0" encoding="utf-8"?>
<resources xmlns:android="http://schemas.android.com/apk/res/android">
    <!-- Application theme. -->
    <style name="ActionTheme" parent="@style/Theme.AppCompat.Light">           
        <item name="android:actionBarStyle">@style/ActionBarStyle</item>         
        <item name="android:windowActionBar">true</item>  
    </style>

   <style name="ActionBarStyle" parent="@style/Widget.AppCompat.ActionBar">     
       <item name="android:displayOptions"></item>           
        <item name="android:background">@drawable/header_style</item>         
         <item name="android:titleTextStyle">@style/ActionBarTitleText</item>  
        <item name="android:layout_height">wrap_content</item> 
        <item name="android:layout_width">wrap_content</item>   
        <item name="android:height">70dp</item> 
     </style>

    <style name="ActionBarTitleText" parent="@style/TextAppearance.AppCompat.Widget.ActionBar.Title">
        <item name="android:textColor">@color/color_dark_blue</item>           
    </style>     
</resources>
Run Code Online (Sandbox Code Playgroud)

android border android-appcompat android-actionbar

2
推荐指数
1
解决办法
7561
查看次数

AppCompat中的半透明ActionBar

我想使用半透明的动作栏. android:minSdkVersion is "9"

我试过下面的代码

<style name="myActionBarTheme" parent="android:style/Widget.Holo.ActionBar">
   <item name="android:background">#FF4444</item>
   <item name="android:alpha">1.0</item>
</style>
Run Code Online (Sandbox Code Playgroud)

它显示错误: android:alpha requires API level 11 (current min is 9)

android alpha android-appcompat android-actionbar-compat

2
推荐指数
1
解决办法
1872
查看次数

使用AppCompat和Material更改硬键菜单面板的样式

关于使用ActionBarSherlock或其他库更改硬键菜单的文本颜色或背景图像有很多问题.但我找不到任何与使用AppCompat的Material主题相关的答案.

那么如何更改硬键菜单面板的文本颜色和背景?

默认情况下,面板看起来像这样(Light.DarkActionBar主题).我真的不喜欢丑陋的灰色到灰色的对比,我想把文字颜色改成黑色.

默认菜单看

android android-appcompat android-menu android-theme material-design

2
推荐指数
1
解决办法
739
查看次数

ActionMode 菜单不隐藏菜单项

我在列表视图中使用动作模式进行多选。我遇到的问题是,在模拟器上测试时,我在操作模式菜单中指定为隐藏的图标永远不会隐藏在溢出菜单中,尽管在预览中是这样。我在这里使用 AppCompat 主题是我的 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/tag"
        android:enabled="true"
        android:title="Tag"
        android:icon="@drawable/in_ic_tag_white_24dp"
        android:orderInCategory="1"
        app:showAsAction="always" />

    <item
        android:id="@+id/delete"
        android:enabled="true"
        android:title="@string/label_delete"
        android:icon="@drawable/in_ic_delete_white_24dp"
        android:orderInCategory="2"
        app:showAsAction="never" />

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

android menuitem android-appcompat android-menu android-actionmode

2
推荐指数
1
解决办法
1060
查看次数

invalidateOptionsMenu()不适用于AppCompatActivity

我换我ActivityAppCompatActivity现在呼吁invalidateOptionsMenu()onOptionsItemSelected()不再更新菜单项,因为他们以前那样.onPrepareOptionsMenu()不叫.

我添加了以下依赖项

compile "com.android.support:appcompat-v7:22.2.1"
Run Code Online (Sandbox Code Playgroud)

并更新了我ActivityAppCompatActivity(注意只在第一次调用invalidateOptionsMenu()onResume()作品中,其他两个不):

public class MyActivity extends AppCompatActivity {

    private boolean isStopSaved;

    // ...

    @Override
    protected void onResume() {
        super.onResume();

        if (/* Check DB if star should be set */) {
            isStopSaved = true;
        } else {
            isStopSaved = false;
        }
        invalidateOptionsMenu(); // This updates the menu as expected
    }

    @Override
    public boolean onPrepareOptionsMenu(Menu menu) {

        // ...

        return super.onPrepareOptionsMenu(menu); …
Run Code Online (Sandbox Code Playgroud)

android android-appcompat android-menu

2
推荐指数
1
解决办法
5414
查看次数

Android应用程序在setSupportActionBar崩溃

我正在尝试按照以下教程创建选项卡视图布局:http://www.android4devs.com/2015/01/how-to-make-material-design-sliding-tabs.html

不幸的是,应用程序在出现任何问题之前都会崩溃.将调试日志插入我的代码后,我发现问题存在setSupportActionBar(toolbar)于MainActivity 的行中.我不知道为什么会这样.我已经粘贴了下面的整个MainActivity文件.

package com.example.rkhaj.tabstest;

import android.support.v4.view.ViewPager;
import android.support.v7.app.ActionBarActivity;
import android.os.Bundle;
import android.support.v7.app.AppCompatActivity;
import android.support.v7.widget.Toolbar;
import android.util.Log;
import android.view.Menu;
import android.view.MenuItem;


public class MainActivity extends AppCompatActivity {

    // Declaring Your View and Variables

    Toolbar toolbar;
    ViewPager pager;
    ViewPagerAdapter adapter;
    SlidingTabLayout tabs;
    CharSequence Titles[]={"Home","Events"};
    int Numboftabs =2;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);

        Log.d("icecream", "position 1");


        // Creating The Toolbar and setting it as the Toolbar for the activity

        toolbar = (Toolbar) findViewById(R.id.tool_bar);
        Log.d("icecream", …
Run Code Online (Sandbox Code Playgroud)

java android android-appcompat android-studio

2
推荐指数
1
解决办法
6613
查看次数

意外转换为 AppCompatButton:布局标记为 Button

AppCompatButton参考页面:

当您在布局中使用 Button 时,这将自动使用。您应该只需要在编写自定义视图时手动使用此类。

我将法线投射ButtonAppCompatButton,以便我可以使用setSupportBackgroundTintList方法:

AppCompatButton button = (AppCompatButton) findViewById(R.id.normalButton);
button.setSupportBackgroundTintList(ColorStateList.valueOf(tintColor));
Run Code Online (Sandbox Code Playgroud)

它的构建和运行没有任何问题,但 Android Studio 1.4 在投射线上给了我恼人的红色高光:

意外转换为 AppCompatButton:布局标记为 Button

有任何想法吗?

android casting lint android-appcompat android-studio

2
推荐指数
1
解决办法
4154
查看次数

xamarin NavigationView为app:headerLayout找不到找不到资源的错误

我正在尝试在我的Xamarin Android项目中设置NavigationView.我有Main.axml文件结构如下:

<?xml version="1.0" encoding="utf-8"?>
<android.support.v4.widget.DrawerLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:app="http://schemas.android.com/apk/res-auto"
    android:id="@+id/drawerLayout"
    android:layout_width="match_parent"
    android:layout_height="match_parent">
    <LinearLayout
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        android:orientation="vertical">
        <include
            layout="@layout/toolbar" />
        <FrameLayout
            android:id="@+id/frameLayout"
            android:layout_width="match_parent"
            android:layout_height="match_parent" />
    </LinearLayout>
    <android.support.design.widget.NavigationView
        android:id="@+id/nav_view"
        android:layout_width="wrap_content"
        android:layout_height="match_parent"
        android:layout_gravity="start"
        app:menu="@menu/navmenu"
        app:headerLayout="@layout/headerdrawerlayout" />
</android.support.v4.widget.DrawerLayout>
Run Code Online (Sandbox Code Playgroud)

在我的packages.config中,我有AppCompat包(以及其他):

<package id="MvvmCross.Droid.Support.V7.AppCompat" version="4.1.7" targetFramework="monoandroid60" />
<package id="Xamarin.Android.Support.v7.AppCompat" version="23.3.0" targetFramework="monoandroid60" />
Run Code Online (Sandbox Code Playgroud)

我收到编译器错误:

No resource identifier found for attribute 'headerLayout' in package 'mycompany.myapp'  myapp.Android   C:\Users\JP\Documents\Visual Studio 2015\Projects\MyApp\MyApp.Android\Resources\layout\Main.axml    
Run Code Online (Sandbox Code Playgroud)

Resource.designer.cs文件不应该自动引入这些属性吗?我必须承认有点不确定这个过程是如何运作的.它可能是某个地方的版本冲突吗?res-auto如何适应一切?

任何帮助,将不胜感激.

android android-appcompat mvvmcross xamarin

2
推荐指数
1
解决办法
1163
查看次数

添加Maven存储库会导致错误 - 无法实例化android.support.v7.widget.AppcompatTextView

注意:我已经完成了所有相关的帖子并完成了所写的内容,但没有任何效果.

我试图ConstraintLayout为百分比尺寸添加1.1.0-beta1,但每当我这样做时,底部会出现一个弹出窗口.
在此输入图像描述

我多次点击"安装存储库和同步项目"但没有任何反应.所以,我尝试在Build.gradle(Project)中添加以下代码,它工作正常,但出现了新的错误.

repositories {
    maven {
        url 'https://maven.google.com'
    }
}
Run Code Online (Sandbox Code Playgroud)


新的错误与 AppCompatTextView

无法实例化以下类: - android.support.v7.widget.AppCompatTextView

java.lang.NullPointerException
    at android.content.res.Resources_Delegate.getValue(Resources_Delegate.java:788)
    at android.content.res.Resources.getValue(Resources.java:1286)
    at android.support.v4.content.res.ResourcesCompat.loadFont(ResourcesCompat.java:212)
    at android.support.v4.content.res.ResourcesCompat.getFont(ResourcesCompat.java:206)
    at android.support.v7.widget.TintTypedArray.getFont(TintTypedArray.java:119)
    at android.support.v7.widget.AppCompatTextHelper.updateTypefaceAndStyle(AppCompatTextHelper.java:208)
    at android.support.v7.widget.AppCompatTextHelper.loadFromAttributes(AppCompatTextHelper.java:152)
    at android.support.v7.widget.AppCompatTextHelperV17.loadFromAttributes(AppCompatTextHelperV17.java:38)
    at android.support.v7.widget.AppCompatTextView.<init>(AppCompatTextView.java:81)
    at android.support.v7.widget.AppCompatTextView.<init>(AppCompatTextView.java:71)
    at sun.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method)
    at sun.reflect.NativeConstructorAccessorImpl.newInstance(NativeConstructorAccessorImpl.java:62)
    at sun.reflect.DelegatingConstructorAccessorImpl.newInstance(DelegatingConstructorAccessorImpl.java:45)
    at java.lang.reflect.Constructor.newInstance(Constructor.java:423)
    at org.jetbrains.android.uipreview.ViewLoader.createNewInstance(ViewLoader.java:475)
    at org.jetbrains.android.uipreview.ViewLoader.loadClass(ViewLoader.java:250)
    at org.jetbrains.android.uipreview.ViewLoader.loadClass(ViewLoader.java:213)
    at com.android.tools.idea.rendering.LayoutlibCallbackImpl.loadClass(LayoutlibCallbackImpl.java:193)
    at android.view.BridgeInflater.loadCustomView(BridgeInflater.java:333)
    at android.view.BridgeInflater.onCreateView(BridgeInflater.java:152)
    at android.view.LayoutInflater.onCreateView(LayoutInflater.java:717)
    at android.view.LayoutInflater.createViewFromTag(LayoutInflater.java:785)
    at android.view.BridgeInflater.createViewFromTag(BridgeInflater.java:222)
    at android.view.LayoutInflater.createViewFromTag(LayoutInflater.java:727)
    at android.view.LayoutInflater.rInflate_Original(LayoutInflater.java:858)
    at android.view.LayoutInflater_Delegate.rInflate(LayoutInflater_Delegate.java:70)
    at android.view.LayoutInflater.rInflate(LayoutInflater.java:834)
    at android.view.LayoutInflater.inflate(LayoutInflater.java:492)
    at com.android.layoutlib.bridge.bars.CustomBar.<init>(CustomBar.java:95) …
Run Code Online (Sandbox Code Playgroud)

android android-appcompat android-studio

2
推荐指数
1
解决办法
3227
查看次数

在主题中使用fontFamily属性时,toast会使用appcompat v26抛出ArrayIndexOutOfBoundsException

每当我显示时Toast,应用程序崩溃.

如果我使用旧版本的AppCompat库或fontFamily从样式中删除,该应用程序工作正常.

的onCreate:

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_main);
    Toast.makeText(this, "Test", Toast.LENGTH_SHORT).show(); //line 13
}
Run Code Online (Sandbox Code Playgroud)

相关性:

compile 'com.android.support:appcompat-v7:26.1.0'
Run Code Online (Sandbox Code Playgroud)

AppTheme:

<style name="AppTheme" parent="Theme.AppCompat.Light.DarkActionBar">
    <item name="colorPrimary">@color/colorPrimary</item>
    <item name="colorPrimaryDark">@color/colorPrimaryDark</item>
    <item name="colorAccent">@color/colorAccent</item>
    <item name="android:fontFamily">sans-serif-light</item>
</style>
Run Code Online (Sandbox Code Playgroud)

堆栈跟踪:

引起:java.lang.ArrayIndexOutOfBoundsException:length = 16; 在android.content.res.X.B.Adray.loadStringValueAt的android.content.res.XmlBlock $ Parser.getPooledString(XmlBlock.java:458)的android.content.res.StringBlock.get(StringBlock.java:65)索引= 233 TypedArray.java:1212)在Android.support.v7.widget.TintTypedArray.getString(TintTypedArray.java:143)android.content.res.TypedArray.getString(TypedArray.java:202)的android.support.v7.:347)位于android.support.v7.widget.AppCompatTextHelper.loadFromAttributes(AppCompatTextHelper.java:152)的.AppCompatTextHelper.updateTypefaceAndStyle(AppCompatTextHelper.java:215)位于android.support.v7.widget.AppCompatTextHelperV17.loadFromAttributes(AppCompatTextHelperV17.java:38)at android.support.v7.widget.AppCompatTextView.(AppCompatTextView.java:81),位于android.support.v7.app.AppCompatViewInflater.createView(AppCompatViewInflater)的android.support.v7.widget.AppCompatTextView.(AppCompatTextView.java:71). java:103)在android.support.v7.app.AppCompatDelegateImplV9.createView(AppCompatDelegateImplV9.java:1024))android.view.LayoutInflater.createViewFromTag(LayoutInflater.java:727)的android.view.LayoutInflater.createViewFromTag(LayoutInflater.java:769)上的android.support.v7.app.AppCompatDelegateImplV9.onCreateView(AppCompatDelegateImplV9.java:1081)在android.view.LayoutInflater.rInflate(LayoutInflater.java:858)的android.view.LayoutInflater.rInflateChildren(LayoutInflater.java:821)在android.view上的android.view.LayoutInflater.inflate(LayoutInflater.java:518). LayoutInflater.inflate(LayoutInflater.java:426)位于android.view.LayoutInflater.inflate(LayoutInflater.java:377)的android.widget.Toast.makeText(Toast.java:266)at io.yarsa.blankapp.MainActivity.onCreate (MainActivity.java:13)在android.app.Anstrumentation.callActivityOnCreate(Instrumentation.java:1119)android.app.ActivityThread.performLaunchActivity(ActivityThread.java)的android.app.Activity.performCreate(Activity.java:6679). 2618)在Android.app.A的android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2726)android.app.Loper.loop上的android.app.A.运行时,Android.O.运行时,运行android.app.ActivityThread $ H.handleMessage(ActivityThread.java:1477)的ctivityThread.-wrap12(ActivityThread.java)(Handler.java:102) Looper.java:154)在android.app.ActivityThread.main(ActivityThread.java:6126)的java.lang.reflect.Method.invoke(Native Method)at com.android.internal.os.ZygoteInit $ MethodAndArgsCaller.run( ZygoteInit.java:886)at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:776)

有没有其他选择,以便我可以使用fontFamily最新版本的AppCompat库在主题中使用该属性?

android toast android-appcompat font-family android-theme

2
推荐指数
1
解决办法
742
查看次数