我正在尝试使用ActionBar构建一个应用程序(带有"向上"按钮),但我完全没有正确地包含appcompat-v7库.
我正在使用Eclipse.我不想简单地使用Android Studio,因为我曾尝试多次切换到Idea,并且从未像Eclipse那样舒服.
我已经按照d.android.com上的官方说明进行操作,但我没有让它工作.我也广泛搜索并遵循那里发现的建议 - 包括这里的几个主题.
我得到的结果是Eclipse(Fragment,ActionBarActivity等)是由Eclipse找到的,但像主题这样的东西却没有.如果不使用Theme.Appcompat.*主题,我无法正确部署我的应用程序.我尝试设置时遇到的错误android:theme="@android:style/Theme.AppCompat.Light.DarkActionBar"是错误:
Error: No resource found that matches the given name (at 'theme' with value '@android:style/
Theme.AppCompat.Light.DarkActionBar').
Run Code Online (Sandbox Code Playgroud)
在我写这篇文章时,我想到的可能是我的问题更多的是我试图设置主题而不是appcompat库 - 但我不会假设,希望有人可以帮我弄清楚我哪里出错了.
有趣的是,每当我尝试部署我的应用程序时,eclipse控制台中都会出现以下错误:
[2013-08-28 15:20:07 - android-support-v7-appcompat] Could not find android-support-v7-appcompat.apk!
Run Code Online (Sandbox Code Playgroud)
以下是一些屏幕截图,显示了我的应用程序的属性以及我如何尝试包含appcompat库,该库已导入我的Workspace并已设置为Android库.


我有一个几乎空的android项目,它使用appcomat.
我有一个菜单项需要始终隐藏(仅在点击时显示在下拉列表中)
<item
android:id="@+id/action_settings"
android:title="@string/action_settings"
android:orderInCategory="100"
app:showAsAction="never"/>
Run Code Online (Sandbox Code Playgroud)
它在我的Nexus7上运行正常,但在Galaxy S3上,使用Android 4.3,动作栏中的图标根本没有显示.
我开发了我的应用程序.我想让我的应用程序与姜饼兼容.这是我的代码...我用资源MainActivity导入了库appcompat-v7:
import android.net.ConnectivityManager;
import android.net.NetworkInfo;
import android.os.Bundle;
import android.app.AlertDialog;
import android.content.Context;
import android.content.DialogInterface;
import android.content.Intent;
import android.support.v4.app.Fragment;
import android.support.v4.app.FragmentManager;
import android.support.v4.app.FragmentTransaction;
import android.support.v4.app.FragmentStatePagerAdapter;
import android.support.v4.view.ViewPager;
import android.support.v7.app.ActionBarActivity;
import android.support.v7.app.ActionBar;
public class MainActivity extends ActionBarActivity {
ViewPager Tab;
TabPagerAdapter TabAdapter;
ActionBar actionBar;
public boolean StatusConnection = false;
public int thread = 0;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
TabAdapter = new TabPagerAdapter(getSupportFragmentManager());
Tab = (ViewPager)findViewById(R.id.pager);
Tab.setOnPageChangeListener(new ViewPager.SimpleOnPageChangeListener() {
@Override
public void onPageSelected(int position) {
actionBar.setSelectedNavigationItem(
position);
Tab.setCurrentItem(position);
}
}); …Run Code Online (Sandbox Code Playgroud) 试图将(appcompat v20)中的应用程序移动到新库appcompat v21
与:appcompat-v7:20工作很好
我这样做了:
ActionBarActivity implements ActionBar.TabListener, ActionBar.OnNavigationListener
Run Code Online (Sandbox Code Playgroud)
有这个:
android.view.InflateException: Binary XML file line #17: Error inflating class android.support.v7.internal.widget.ActionBarOverlayLayout
android nullpointerexception fragment android-appcompat android-actionbar
我正在尝试自定义我的AppCompat主题(Base.Theme.AppCompat.Light.DarkActionBar)来更改搜索建议背景颜色和文本.
这是我的样式文件:
<resources>
<!-- extend one of the Theme.AppCompat themes -->
<style name="AppTheme" parent="Base.Theme.AppCompat.Light.DarkActionBar">
<!-- customize the color palette -->
<item name="colorPrimary">@color/material_blue_500</item>
<item name="colorPrimaryDark">@color/material_blue_700</item>
<item name="colorAccent">@color/material_blue_200</item>
<item name="android:windowBackground">@color/material_blue_200</item>
<item name="android:actionBarStyle">@style/ActionBar</item>
<item name="android:actionBarWidgetTheme">@style/ActionBarWidget</item>
</style>
<!-- Actionbar Theme -->
<style name="ActionBar" parent="Widget.AppCompat.Light.ActionBar.Solid.Inverse">
<item name="android:background">@color/material_blue_200</item>
<item name="android:icon">@drawable/ic_launcher</item>
</style>
<style name="ActionBarWidget" parent="Theme.AppCompat.Light.DarkActionBar">
<!-- SearchView customization-->
<item name="searchViewSearchIcon">@drawable/ic_action_search</item>
<item name="searchViewCloseIcon">@drawable/ic_action_remove</item>
<item name="searchViewTextField">@drawable/ab_textfield_searchview</item>
<item name="searchViewAutoCompleteTextView">@style/AutoCompleteTextView</item>
</style>
<style name="AutoCompleteTextView" parent="Widget.AppCompat.Light.AutoCompleteTextView">
<item name="android:textColor">@android:color/white</item>
<item name="android:textCursorDrawable">@null</item>
<item name="android:textColorHighlight">@color/material_blue_200</item>
</style>
</resources>
Run Code Online (Sandbox Code Playgroud)
编译后,我收到这种错误:
错误:(24,21)找不到匹配给定名称的资源:attr'searchViewAutoCompleteTextView'.
错误:(22,21)找不到与给定名称匹配的资源:attr'searchViewCloseIcon'.
错误:(21,21)找不到与给定名称匹配的资源:attr'searchViewSearchIcon'.
错误:(23,21)找不到与给定名称匹配的资源:attr'searchViewTextField'.
有什么建议吗?
我试图将我的AlterDialog更新为新的android.support.v7.app.AlertDialog,只需更改:
import android.app.AlertDialog
Run Code Online (Sandbox Code Playgroud)
至
import android.support.v7.app.AlertDialog
Run Code Online (Sandbox Code Playgroud)
新的AlertDialogs现在在Pre-Lollipop上显示为Material样式,但对话窗口更宽(在Tablet上测试).这不是一个错误吗?应该是android.support.v7.app.AlertDialog与android.app.AlertDialog相同的宽度?
android android-appcompat android-alertdialog material-design
我通过以下方式主题:
<!-- Base application theme. -->
<style name="AppTheme" parent="Theme.AppCompat">
<!-- Customize your theme here. -->
<item name="colorPrimary">@color/primary</item>
<item name="colorPrimaryDark">@color/primaryDark</item>
<item name="colorAccent">@color/accent</item>
<item name="alertDialogTheme">@style/AppTheme.Dialog</item>
</style>
<style name="AppTheme.Dialog" parent="Theme.AppCompat.Dialog.Alert">
<item name="colorAccent">@color/accent</item>
</style>
Run Code Online (Sandbox Code Playgroud)
但是,当我在我的应用程序中创建AlertDialogs时,它们根本不是主题.其他组件如ActionBar正在正确着色.我错过了什么吗?
我使用的是AppCompat版本com.android.support:appcompat-v7:23.1.1,我的设备安装了Android 4.4.4.
为什么这看起来很难实现?我有一个条件,我想动态更改我的活动的操作栏.
android.support.v7.app.ActionBar ab = getSupportActionBar();
ab.setTitle(getString(R.string.voted_on_by));
Run Code Online (Sandbox Code Playgroud)
为什么不将我的操作栏的标题更改为我想要的字符串?
在onCreate中我这样做:
Toolbar toolbar = (Toolbar) findViewById(R.id.toolbar);
setSupportActionBar(toolbar);
assert getSupportActionBar() != null;
getSupportActionBar().setDisplayShowTitleEnabled(false);
getSupportActionBar().setDisplayHomeAsUpEnabled(true);
Run Code Online (Sandbox Code Playgroud) java android android-appcompat android-actionbar appcompatactivity
我希望能够设置一个主题来在AppCompat AlertDialog中设置消息文本大小.主题需要有parent="@style/Theme.AppCompat.Dialog".我花了几个小时搜索并尝试了所有的建议,但它们似乎都没有使用那个基本主题.
如果父级更改为Holo主题,那么我可以使用更改消息文本大小textAppearanceMedium,但对话框的其余部分看起来非常难看:S
目前我的主题是(所有这一切目前都已联系并正在运作):
<?xml version="1.0" encoding="utf-8"?>
<resources>
<style name="MyDialogTheme" parent="@style/Theme.AppCompat.Dialog">
<!-- Used for the buttons -->
<item name="colorAccent">@color/colorPrimary</item>
<!-- Button text size -->
<item name="android:textSize">@dimen/ui_text_size</item>
<!-- Content text color -->
<item name="android:textColorPrimary">@color/ui_text_color</item>
<!-- Title style -->
<item name="android:windowTitleStyle">@style/MyDialogTitleStyle</item>
<!-- Button style (except size) -->
<item name="android:textAppearanceButton">@style/MyDialogButtonTextAppearance</item>
<!-- Dialog background -->
<item name="android:windowBackground">@color/ui_background</item>
</style>
<style name="MyDialogTitleStyle" parent="@style/RtlOverlay.DialogWindowTitle.AppCompat">
<item name="android:textAppearance">@style/MyDialogTitleTextAppearance</item>
<item name="android:textSize">@dimen/ui_large_text_size</item>
</style>
<style name="MyDialogTitleTextAppearance">
<item name="android:textSize">@dimen/ui_large_text_size</item>
<item name="android:textAllCaps">true</item>
<item name="android:textColor">@color/ui_title_color</item>
</style>
<style name="MyDialogButtonTextAppearance">
<item …Run Code Online (Sandbox Code Playgroud) 到目前为止,我正在使用AppCompat库,但现在我已将项目迁移到AndroidX库。
我坚持使用androidx的 proguard规则。
如您所知,我们正在对AppCompat使用proguard规则,如下所示:
-keep public class android.support.v7.widget.** { *; }
-keep public class android.support.v7.internal.widget.** { *; }
-keep public class android.support.v7.internal.view.menu.** { *; }
-keep public class * extends android.support.v4.view.ActionProvider {
public <init>(android.content.Context);
}
Run Code Online (Sandbox Code Playgroud)
我已经搜索了很多,但是没有找到任何合适的文档。
AndroidX Proguard规则是否有任何更新?
android proguard android-appcompat android-proguard androidx