标签: android-actionbar

如何从片段中获取工具栏?

ActionBarActivityNavigationDrawer和使用support_v7 Toolbar的动作条.在我的一个片段工具栏中有自定义视图.在其他片段中Toolbar应显示标题.

如何Toolbar从片段中获取自定义实例?我可以使用ActionBar getActivity().getActionBar(),但是如果我调用setTitle()这个实例ActionBar它什么都不做.

UPD:

就我而言

((ActionBarActivity) getActivity()).getSupportActionBar().setTitle();

(正如MrEngineer13所说)在第一次片段创建时不起作用,因为我从onHiddenChanged()调用它.现在我向onCreateView()添加更多一个,它工作正常.

android android-fragments android-actionbar android-support-library android-toolbar

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

SearchView的OnCloseListener不起作用

我正在尝试添加SearchView对Android 3.0+ ActionBar的支持,但我无法让它OnCloseListener工作.

这是我的代码:

@Override
public boolean onCreateOptionsMenu(Menu menu) {
    getMenuInflater().inflate(R.menu.menu, menu);
    searchView = (SearchView) menu.findItem(R.id.search_textbox).getActionView();
    searchView.setOnQueryTextListener(new OnQueryTextListener() {
        @Override
        public boolean onQueryTextChange(String newText) {
            searchLibrary(newText);
            return false;
        }
        @Override
        public boolean onQueryTextSubmit(String query) { return false; }
    });
    searchView.setOnCloseListener(new OnCloseListener() {
        @Override
        public boolean onClose() {
            System.out.println("Testing. 1, 2, 3...");
            return false;
        }
    });
    return true;
}
Run Code Online (Sandbox Code Playgroud)

搜索效果很好,每个人都在工作,除了OnCloseListener.没有任何东西被打印到Logcat.这是我按下"关闭"按钮时的Logcat:

02-17 13:01:52.914: I/TextType(446): TextType = 0x0
02-17 13:01:57.344: I/TextType(446): TextType = 0x0
02-17 13:02:02.944: I/TextType(446): …
Run Code Online (Sandbox Code Playgroud)

android android-3.0-honeycomb android-4.0-ice-cream-sandwich android-actionbar

99
推荐指数
7
解决办法
5万
查看次数

如何以编程方式打开SearchView?

ActionBar有一个名为"SearchView"的小部件.当它不使用时,它看起来像这样:

在此输入图像描述

当它在使用时,它看起来像这样:

在此输入图像描述

我想(当然是以编程方式)打开searchview(使其"正在使用").

我尝试了几个功能,例如:

SearchView searchView = (SearchView) menu.findItem(R.id.menu_search).getActionView();
    searchView.setOnQueryTextListener(this);

    searchView.performClick();
    searchView.requestFocus();
Run Code Online (Sandbox Code Playgroud)

但这些都没有奏效......

XML中的SearchView:

<item android:id="@+id/menu_search"
      android:title="Search"
      android:icon="@drawable/ic_action_search"
      android:showAsAction="ifRoom|collapseActionView"
      android:actionViewClass="android.widget.SearchView" />
Run Code Online (Sandbox Code Playgroud)

java android android-actionbar

98
推荐指数
5
解决办法
5万
查看次数

如何从Android appcompat v7 21库实现DrawerArrowToggle

所以现在Android 5.0发布了,我想知道如何实现动画操作栏图标.

这个库在这里实现它很好但是因为appcompat v7库有它如何实现它?

该库在themes.xml中引用它

 <item name="drawerArrowStyle">@style/Widget.AppCompat.DrawerArrowToggle</item>
Run Code Online (Sandbox Code Playgroud)

在这种风格下

 <style name="Base.V7.Theme.AppCompat" parent="Platform.AppCompat">
Run Code Online (Sandbox Code Playgroud)

UPDATE

我使用v7 DrawerToggle实现了这个功能.但是我无法设计它.请帮忙

我在v7 styles_base.xml中找到了它的样式

<style name="Base.Widget.AppCompat.DrawerArrowToggle" parent="">
    <item name="color">?android:attr/textColorSecondary</item>
    <item name="thickness">2dp</item>
    <item name="barSize">18dp</item>
    <item name="gapBetweenBars">3dp</item>
    <item name="topBottomBarArrowSize">11.31dp</item>
    <item name="middleBarArrowSize">16dp</item>
    <item name="drawableSize">24dp</item>
    <item name="spinBars">true</item>
</style>
Run Code Online (Sandbox Code Playgroud)

我把它添加到我的样式中并且没有用.也添加到我的attr.xml

<declare-styleable name="DrawerArrowToggle">
    <!-- The drawing color for the bars -->
    <attr name="color" format="color"/>
    <!-- Whether bars should rotate or not during transition -->
    <attr name="spinBars" format="boolean"/>
    <!-- The total size of the drawable -->
    <attr name="drawableSize" format="dimension"/>
    <!-- The max gap …
Run Code Online (Sandbox Code Playgroud)

android android-appcompat android-actionbar drawertoggle android-5.0-lollipop

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

Android Lollipop,AppCompat ActionBar自定义视图不占用整个屏幕宽度

所以,我刚刚将我的代码库更新为Lollipop,而且我遇到了Action Bar的问题.我正在使用AppCompat和ActionBarActivity,并为自定义视图充气.似乎自定义视图不再占据屏幕的整个宽度,在左侧留下一条细条

建筑用19 过去的样子

建筑用21 它看起来现在的样子

这是我用来设置Action Bar的代码.有人有主意吗?

final ActionBar actionBar = getSupportActionBar();
if(actionBar != null) {
    actionBar.setDisplayHomeAsUpEnabled(false);
    actionBar.setDisplayShowHomeEnabled(false);
    actionBar.setDisplayShowTitleEnabled(false);
    actionBar.setDisplayShowCustomEnabled(true);
    actionBar.setNavigationMode(ActionBar.NAVIGATION_MODE_STANDARD);
    actionBar.setCustomView(R.layout.action_bar_content_search_custom_view);
    actionBar.setBackgroundDrawable(null);
    // actionBar.setStackedBackgroundDrawable(null);
    TextView title = (TextView) actionBar.getCustomView().findViewById(R.id.action_bar_title);
    title.setText(R.string.youtube);
    ImageView back = (ImageView) actionBar.getCustomView().findViewById(R.id.action_bar_back);
    back.setOnClickListener(new OnClickListener() {
        @Override
        public void onClick(View v) {
            finish();
        }
    });
}
Run Code Online (Sandbox Code Playgroud)

编辑

取出自定义视图并更改背景现在占用整个宽度.问题是,我们如何让CustomView占用ActionBar的整个宽度?

android android-appcompat android-actionbar android-5.0-lollipop

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

Android透明状态栏和操作栏

我已经对这个主题做了一些研究,我找不到一个完整的解决方案,所以,一步一步,经过一些反复试验,我终于找到了如何实现这些结果:透明或有色ActionbarStatusbar.请看下面的答案.

android android-appcompat android-actionbar android-toolbar android-statusbar

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

在片段或活动中使用工具栏的协调器布局

使用新的设计库有几个新的布局,如果开发人员愿意,可以改变工具栏的行为方式.由于不同的片段具有不同的行为和目标,例如,具有折叠工具栏的画廊片段显示重要照片,或者没有滚动视图的片段,不需要appbarlayout来隐藏工具栏,在活动中具有单个工具栏可以证明很难.

那么,我应该将工具栏移动到每个片段吗?如果是这样,我每次显示片段时都必须设置supportActionBar,并且还要在片段中引用活动,这会使片段的独立性无效.如果我单独将Activity放在Activity中,我必须为每个片段中的每种行为定义多个布局.什么是最好的方法?

android android-fragments android-activity android-actionbar

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

如何在ActionBar中显示自定义视图?

我想在操作栏中显示自定义搜索(我正在使用ActionBarSherlock).

我明白了:

在此输入图像描述

但我想让自定义布局(edittext字段)占用整个可用宽度.

我按照这里的建议实现了自定义布局.

有我的自定义布局search.xml:

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    style="?attr/actionButtonStyle"
    android:layout_width="fill_parent"
    android:layout_height="match_parent"
    android:layout_gravity="fill_horizontal"
    android:focusable="true" >

    <FrameLayout
        android:layout_width="fill_parent"
        android:layout_height="wrap_content"
        android:layout_gravity="center_vertical|fill_horizontal" >

        <EditText
            android:id="@+id/search_query"
            android:layout_width="fill_parent"
            android:layout_height="wrap_content"
            android:layout_gravity="left|center"
            android:background="@drawable/bg_search_edit_text"
            android:imeOptions="actionSearch"
            android:inputType="text" />

        <ImageView
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_gravity="right|center_vertical"
            android:src="@drawable/ic_search_arrow" />

    </FrameLayout>

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

并在MyActivity:

ActionBar actionBar = getSupportActionBar();
actionBar.setDisplayHomeAsUpEnabled(true);
actionBar.setDisplayShowCustomEnabled(true);
actionBar.setDisplayShowTitleEnabled(false);
actionBar.setIcon(R.drawable.ic_action_search);

LayoutInflater inflator = (LayoutInflater) this .getSystemService(Context.LAYOUT_INFLATER_SERVICE);
View v = inflator.inflate(R.layout.search, null);

actionBar.setCustomView(v);
Run Code Online (Sandbox Code Playgroud)

如何使自定义布局占用所有可用宽度actionBar

请帮忙.

android actionbarsherlock android-actionbar

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

如何更新ActionBar中显示的菜单项?

我有一个活动,有2个片段.两者都是ListFragments,并且都将MenuItems贡献给菜单.我有一个MenuItem我设置了属性android:showAsAction让它显示为ActionBar上的一个按钮.哪个工作正常.

现在MenuItem依赖于状态.它是暂停/恢复菜单选项,用于暂停和恢复队列.我的问题是,当创建片段时,我无法弄清楚如何设置它的初始雕像.

它的状态取决于队列是否暂停.所以我有一个AsyncTask来获取队列并根据队列的状态设置一个布尔值(暂停).我正在调用PrepareOptionsMenu来根据队列的最后已知状态设置Pause菜单项的文本,如果我将MenuItem保留在实际菜单中,这将很有用.您点击菜单图标并触发onPrepareOptionsMenu,菜单会在显示之前更新.

问题是,如果我在ActionBar(showAsAction)上放置相同的MenuItem,如何强制它更新而不必调用onPrepareOptionsMenu?我需要能够这样做,因为在第一次启动应用程序时,我发送了一个获取队列的请求,但是在设置并显示ActionBar后,任务返回.我在我的片段中创建了一个处理程序,每次我获得队列更新时都会调用它,但是从那里,如何在ActionBar上更新我的MenuItem的文本?我似乎无法找到一种方法来获取当前设置的Menu来操作它,除了onPrepareOptionMenu.

罗布

android menu android-fragments android-actionbar

91
推荐指数
3
解决办法
10万
查看次数

如何在Android中居中对齐ActionBar标题?

我正在尝试使用以下代码将文本居中ActionBar,但它将自己对齐到左侧.

你如何让它出现在中心?

ActionBar actionBar = getActionBar();
actionBar.setDisplayShowTitleEnabled(true);
actionBar.setTitle("Canteen Home");
actionBar.setHomeButtonEnabled(true);
actionBar.setIcon(R.drawable.back);
Run Code Online (Sandbox Code Playgroud)

android android-theme android-actionbar

91
推荐指数
6
解决办法
20万
查看次数