我正在使用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: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)
关于使用ActionBarSherlock或其他库更改硬键菜单的文本颜色或背景图像有很多问题.但我找不到任何与使用AppCompat的Material主题相关的答案.
那么如何更改硬键菜单面板的文本颜色和背景?
默认情况下,面板看起来像这样(Light.DarkActionBar主题).我真的不喜欢丑陋的灰色到灰色的对比,我想把文字颜色改成黑色.

android android-appcompat android-menu android-theme material-design
我在列表视图中使用动作模式进行多选。我遇到的问题是,在模拟器上测试时,我在操作模式菜单中指定为隐藏的图标永远不会隐藏在溢出菜单中,尽管在预览中是这样。我在这里使用 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
我换我Activity到AppCompatActivity现在呼吁invalidateOptionsMenu()在onOptionsItemSelected()不再更新菜单项,因为他们以前那样.onPrepareOptionsMenu()不叫.
我添加了以下依赖项
compile "com.android.support:appcompat-v7:22.2.1"
Run Code Online (Sandbox Code Playgroud)
并更新了我Activity的AppCompatActivity(注意只在第一次调用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) 我正在尝试按照以下教程创建选项卡视图布局: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) 从AppCompatButton参考页面:
当您在布局中使用 Button 时,这将自动使用。您应该只需要在编写自定义视图时手动使用此类。
我将法线投射Button到AppCompatButton,以便我可以使用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
有任何想法吗?
我正在尝试在我的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如何适应一切?
任何帮助,将不胜感激.
注意:我已经完成了所有相关的帖子并完成了所写的内容,但没有任何效果.
我试图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) 每当我显示时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库在主题中使用该属性?