我从ActionBarSherlock切换到ActionBarCompat(支持库v7).经过一些调整后,现在几乎所有东西都运转良好.
但是我在ActionBar中遇到了SearchView问题.当它被扩展时(实际上,它总是在我的Activity中扩展),它占用了所有空间并且不尊重设置为始终显示的其他Action Items的空间(showAsAction ="always").
要模拟问题,请使用以下命令:
<menu xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto">
<item
android:id="@+id/menu_buscar"
app:actionViewClass="android.support.v7.widget.SearchView"
android:icon="@drawable/abc_ic_search"
app:showAsAction="always"
android:title="@string/buscar"/>
<item android:id="@+id/tentar_novamente"
android:title="@string/tentar_novamente"
android:icon="@drawable/acao_tentar_novamente"
app:showAsAction="always" />
</menu>
Run Code Online (Sandbox Code Playgroud)
在活动中:
@Override
public boolean onCreateOptionsMenu(Menu menu) {
getMenuInflater().inflate(R.menu.busca_action_menu, menu);
searchMenuItem = menu.findItem(R.id.menu_buscar);
searchView = (SearchView) MenuItemCompat.getActionView(searchMenuItem);
searchView.setIconifiedByDefault(false);
searchView.setQueryHint(stringBusqueArtistasMusicasEAlbuns);
return super.onCreateOptionsMenu(menu);
}
Run Code Online (Sandbox Code Playgroud)
这是android 4.3中的结果:

这是android 2.3的结果(动作项甚至没有出现):

我使用时会出现同样的问题:
setSupportProgressBarIndeterminateVisibility(true);
Run Code Online (Sandbox Code Playgroud)
进度指示器在Android 4.3中显得非常奇怪,并且不会出现在Android 2.3中.
ActionBarSherlock使用相同的代码按预期工作.当有一些操作项时,SearchView用于减小其宽度以为操作项提供空间.
更新:
我在Android的Bug跟踪器中发布了一个问题:https://code.google.com/p/android/issues/detail? id = 58251&thanks = 58251&ts = 1375191632
如果您遇到同样的问题,请关注此问题.
更新:
我试图将操作项放在SearchView之前,这样他们的项就会出现.

但是,setSupportProgressBarIndeterminateVisibility(true)仍未显示进度条.
android actionbarsherlock android-actionbar android-actionbar-compat
我在尝试使用Action Bar Compat支持库到我的项目时遇到了一些错误,我不知道出了什么问题,因为我已按照此链接中的说明进行操作> http://developer.android.com/tools/支持库/ setup.html
所以,这是错误的屏幕截图..

我尝试测试一个使用ActionBarActivity的Activity(来自appcompat库).我需要一个自定义应用程序才能操作DI系统来加载我的测试服务而不是真正的服务.
如果我编写了测试并调用startActivity,我会收到以下错误:
java.lang.IllegalStateException: You need to use a Theme.AppCompat theme (or descendant) with this activity.
Run Code Online (Sandbox Code Playgroud)
如果我调用launchActivityWithIntent,Activity会启动而没有任何问题,但它使用的是我的Real Application类而不是Mocked Application类.任何想法如何解决这个问题或如何在应用程序的onCreate之后执行代码,但是在我的仪器测试中调用onCreate of my Activity之前?
android unit-testing android-activity android-actionbar android-actionbar-compat
如何在扩展ListActivity的活动中使用"android-support-v7-appcompat"的ActionBarActivity.
例如,我有一个活动
public class xxxxxListActivity
extends ListActivity implements OnItemSelectedListener {
// ...................
}
Run Code Online (Sandbox Code Playgroud)
在上面的活动中我想使用"ActionBarActivity",但由于java dosent支持多重继承,我无法使其正常工作.
所以我使用ActionBarSherlock并决定切换到新的ActionBarCompat.使用ABS,可以使用本文中描述的方式隐藏ActionBar: 如何在创建活动之前隐藏操作栏,然后再次显示它?
但是,随着ActionBarCompat上API14的应用程序崩溃,因为当你设置android:windowActionBar为false的getSupportActionBar()方法返回null,即使你已经宣布getWindow().requestFeature(Window.FEATURE_ACTION_BAR);进入onCreate()方法.
有趣的是,如果你打电话getActionBar(),你得到的对象,一切正常.
那么,这是一个错误还是我错过了什么?欢迎任何想法!
styles.xml 文件:
<style name="Theme.MyApp" parent="@style/Theme.AppCompat.Light.DarkActionBar">
<item name="android:windowActionBar">false</item>
<item name="android:windowTitleSize">0dp</item>
</style>
Run Code Online (Sandbox Code Playgroud)
MyActivity.java 文件:
...
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
// Get the action bar feature. This feature is disabled by default into the theme
// for specific reasons.
getWindow().requestFeature(Window.FEATURE_ACTION_BAR);
...
// By default the action bar is hidden.
getSupportActionBar().hide();
}
Run Code Online (Sandbox Code Playgroud) 我正在尝试使用自定义视图的简单操作栏,但我得到以下结果:
为了演示,我创建了一个带有黄色背景颜色的简单xml,它应该占据整个宽度.
这是xml:
<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:background="@color/yellow"
android:orientation="vertical" >
<TextView
android:visibility="gone"
android:id="@+id/action_save"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:background="@drawable/action_save"
android:gravity="center"
android:layout_alignParentLeft="true"
android:layout_centerVertical="true"
android:textStyle="bold"
android:layout_marginLeft="10dp"
android:textColor="@android:color/white"
android:text="@string/save" />
<ImageView
android:visibility="gone"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_centerInParent="true"
android:background="@drawable/ic_actionbar_logo" />
</RelativeLayout>
Run Code Online (Sandbox Code Playgroud)
我在我的应用程序中使用以下主题:
<style name="AppBaseTheme" parent="@style/Theme.AppCompat.Light"></style>
Run Code Online (Sandbox Code Playgroud)

这是操作栏初始化代码:
actionBar = getSupportActionBar();
actionBar.setDisplayShowHomeEnabled(false);
actionBar.setDisplayShowCustomEnabled(true);
actionBar.setCustomView(R.layout.actionbar);
Run Code Online (Sandbox Code Playgroud) 我正在尝试更改操作栏上操作菜单项的文本颜色.使用app compat.溢出图标也不会改变.这是我自定义样式的styles.xml文件.
RES /值/ styles.xml
<style name="AppTheme" parent="@style/Theme.AppCompat.Light">
<!-- Setting values in the default namespace affects API levels 7-13 -->
<item name="actionBarStyle">@style/MyStyledActionBar</item>
</style>
<style name="MyStyledActionBar" parent="@style/Widget.AppCompat.Light.ActionBar">
<!-- Setting values in the default namespace affects API levels 7-13 -->
<item name="background">@drawable/bg_action_bar</item>
<item name="titleTextStyle">@style/MyActionBarTitleText</item>
<item name="actionMenuTextAppearance">@style/MyActionBarMenuText</item>
<item name="actionMenuTextColor">@style/MyActionBarMenuText</item>
<item name="actionOverflowButtonStyle">@style/MyActionButtonOverFlow</item>
</style>
<style name="MyActionBarTitleText" parent="@style/TextAppearance.AppCompat.Widget.ActionBar.Title">
<item name="android:textColor">@color/font_half_white</item>
</style>
<style name="MyActionBarMenuText" parent="@style/TextAppearance.AppCompat.Widget.ActionBar.Menu">
<item name="android:textColor">@color/font_half_white</item>
</style>
<style name="MyActionButtonOverFlow" parent="@style/Widget.AppCompat.Light.ActionButton.Overflow">
<item name="android:src">@drawable/ic_action_search</item>
</style>
Run Code Online (Sandbox Code Playgroud)
RES /值-14/styles.xml
<style name="AppTheme" parent="@style/Theme.AppCompat.Light">
<!-- Setting values in the android namespace affects …Run Code Online (Sandbox Code Playgroud) 我正在尝试将我的应用从API19升级到API21
我对gradle属性所做的主要更改是:
compileSdkVersion 21
buildToolsVersion "21.0.2"
minSdkVersion 8
targetSdkVersion 21
compile 'com.android.support:appcompat-v7:21.0.0'
Run Code Online (Sandbox Code Playgroud)
该应用程序构建正常,但我总是收到以下错误:
10-22 23:10:38.867 7972-8058/com.example.android.demo E/ACRA? com.example.android.demo fatal error : Unable to start activity ComponentInfo{com.example.android.demo/com.example.android.demo.MainActivity2}: android.view.InflateException: Binary XML file line #27: Error inflating class android.support.v7.internal.widget.ActionBarContainer
java.lang.RuntimeException: Unable to start activity ComponentInfo{com.example.android.demo/com.example.android.demo.MainActivity2}: android.view.InflateException: Binary XML file line #27: Error inflating class android.support.v7.internal.widget.ActionBarContainer
at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2298)
at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2360)
at android.app.ActivityThread.access$800(ActivityThread.java:144)
at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1278)
at android.os.Handler.dispatchMessage(Handler.java:102)
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)
Caused by: android.view.InflateException: Binary XML …Run Code Online (Sandbox Code Playgroud) android android-actionbar android-actionbar-compat android-5.0-lollipop
我正在使用ActionBarActivity创建5个选项卡.我使用ViewPager在SectionsPagerAdapter中使用扩展FragmentPagerAdapter在5个选项卡之间滑动.每个选项卡都有一个带有asynctask的片段,在oncreateview方法中调用.当我在一个片段中时,正在调用其他片段中的asynctask.
我尝试在oncreateview方法中使用toast消息是每个片段而不是asynctask.但错误的片段中错误的吐司消息被触发了.
Oncreate方法代码:
mSectionsPagerAdapter = new SectionsPagerAdapter(getSupportFragmentManager());
mViewPager = (ViewPager) findViewById(R.id.pager_exp);
mViewPager.setAdapter(mSectionsPagerAdapter);
mViewPager.setOnPageChangeListener(new ViewPager.SimpleOnPageChangeListener() {
@Override
public void onPageSelected(int position)
{
actionBar.setSelectedNavigationItem(position);
actionBar.setTitle(getHomePageTitle(position));
}
});
for (int i = 0; i < mSectionsPagerAdapter.getCount(); i++)
{
// Create a tab with text corresponding to the page title defined by
// the adapter. Also specify this Activity object, which implements
// the TabListener interface, as the callback (listener) for when
// this tab is selected.
actionBar.addTab(actionBar.newTab()
.setIcon(getPagedrawable(i))
.setTabListener(this));
}
Run Code Online (Sandbox Code Playgroud)
//适配器类代码:
public class …Run Code Online (Sandbox Code Playgroud) android android-asynctask android-actionbar-compat android-actionbaractivity
我想在我的应用程序中显示后退箭头按钮,但当我将其放入我的代码时应用程序崩溃:
getSupportActionBar().setDisplayHomeAsUpEnabled(true);
getSupportActionBar().setDisplayShowHomeEnabled(true);
Run Code Online (Sandbox Code Playgroud)
style.xml
<style name="AppTheme" parent="Theme.AppCompat.Light.NoActionBar">
<item name="colorPrimary">@color/PrimaryColor</item>
<item name="colorPrimaryDark">@color/PrimaryColorDark</item>
<item name="colorAccent">@color/PrimaryColor</item>
<item name="colorControlHighlight">@color/ControlHighlight</item>
<item name="android:statusBarColor" tools:targetApi="21">@android:color/transparent</item>
</style>
<style name="ActionBarPopupThemeOverlay" parent="ThemeOverlay.AppCompat.Light" >
<item name="android:textColor">#000000</item>
</style>
<style name="MyCustomTabLayout" parent="Widget.Design.TabLayout">
<item name="tabIndicatorColor">#FFFFFF</item>
<item name="tabIndicatorHeight">3dp</item>
<item name="tabTextAppearance">@style/MyCustomTabTextAppearance</item>
</style>
<style name="MyCustomTabTextAppearance" parent="TextAppearance.Design.Tab">
<item name="android:textColor">#FFFFFF</item>
</style>
Run Code Online (Sandbox Code Playgroud)
toolbar.xml
<android.support.v7.widget.Toolbar xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
android:layout_height="@dimen/abc_action_bar_default_height_material"
android:elevation="0dp"
android:layout_width="match_parent"
android:id="@+id/toolbar"
android:background="@color/PrimaryColor"
app:theme="@style/ThemeOverlay.AppCompat.Dark.ActionBar"
app:popupTheme="@style/ActionBarPopupThemeOverlay"/>
Run Code Online (Sandbox Code Playgroud)
类(不是片段):
public class WebViewCanale extends AppCompatActivity {
Toolbar toolbar;
TextView textView;
WebView webView;
ProgressBar progressBar;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.webview_canali);
getSupportActionBar().setDisplayHomeAsUpEnabled(true);
getSupportActionBar().setDisplayShowHomeEnabled(true);
//Toolbar …Run Code Online (Sandbox Code Playgroud) android toolbar android-actionbar-compat android-toolbar appcompatactivity