标签: android-actionbar-compat

SearchView占用新ActionBarCompat中的所有空间

我从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

17
推荐指数
2
解决办法
6714
查看次数

类型容器'Android Dependencies'引用非现有库android-support-v7-appcompat/bin/android-support-v7-appcompat.jar

我在尝试使用Action Bar Compat支持库到我的项目时遇到了一些错误,我不知道出了什么问题,因为我已按照此链接中的说明进行操作> http://developer.android.com/tools/支持库/ setup.html

所以,这是错误的屏幕截图.. IDE

android android-actionbar-compat

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

具有ActionBarActivity的ActivityUnitTestCase和startActivity

我尝试测试一个使用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

17
推荐指数
2
解决办法
2259
查看次数

ActionBarActivity中的"android-support-v7-appcompat"和ListActivity在Same活动中

如何在扩展ListActivity的活动中使用"android-support-v7-appcompat"的ActionBarActivity.

例如,我有一个活动

public class xxxxxListActivity
  extends ListActivity implements OnItemSelectedListener  { 
  // ...................
} 
Run Code Online (Sandbox Code Playgroud)

在上面的活动中我想使用"ActionBarActivity",但由于java dosent支持多重继承,我无法使其正常工作.

android android-actionbar-compat

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

ActionBarCompat:在创建活动之前隐藏ActionBar(bug?)

所以我使用ActionBarSherlock并决定切换到新的ActionBarCompat.使用ABS,可以使用本文中描述的方式隐藏ActionBar: 如何在创建活动之前隐藏操作栏,然后再次显示它?

但是,随着ActionBarCompat上API14的应用程序崩溃,因为当你设置android:windowActionBarfalsegetSupportActionBar()方法返回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)

android android-actionbar android-actionbar-compat

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

Android 4.4 Kitkat自定义视图操作栏没有填充整个宽度

我正在尝试使用自定义视图的简单操作栏,但我得到以下结果:

为了演示,我创建了一个带有黄色背景颜色的简单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)

android android-actionbar-compat android-4.4-kitkat

16
推荐指数
2
解决办法
7537
查看次数

如何使用AppCompat更改ActionBar的动作文本颜色

我正在尝试更改操作栏上操作菜单项的文本颜色.使用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)

android android-actionbar android-actionbar-compat

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

升级到SDK 21 - 错误膨胀类android.support.v7.internal.widget.ActionBarContainer

我正在尝试将我的应用从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

16
推荐指数
3
解决办法
9552
查看次数

如何在使用ViewPager时处理ActionBarActivity片段中的AsyncTask?

我正在使用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

15
推荐指数
1
解决办法
3848
查看次数

工具栏上的Android后退箭头(AppCompatActivity)

我想在我的应用程序中显示后退箭头按钮,但当我将其放入我的代码时应用程序崩溃:

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

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