ActionBar

来源:互联网 发布:全民突击辅助软件 编辑:程序博客网 时间:2024/06/06 01:21

ActionBar现在称为App Bar是一个标准的导航元素,组成:
应用图标,返回导航键导向逻辑父类,应用或者活动标题,持续的导航(包括抽屉)

基本

一般的话除非特别指定,只包含有一个标题

改变标题

标题是由AndroidManifest文件进行管理的,在activity的节点内,使用label标签,另外application节点内也可以设置,设置的值为自动的标题在没有为活动指定标签时自动采用这个标题

<application        android:icon="@drawable/ic_launcher"        android:label="@string/app_name"        android:theme="@style/AppTheme">        <activity            android:name="com.codepath.example.simpleapp.FirstActivity"            android:label="@string/activity_name" >        </activity></application>

可以修改android:label/android:icon 来修改标题和图标,也可以调用getSupportActionBar来获得引用动态修改相关的属性

ActionBar actionBar = getSupportActionBar(); // or getActionBar();getSupportActionBar().setTitle("My new title"); // set the top titleString title = actionBar.getTitle().toString(); // get the titleactionBar.hide(); // or even hide the actionbar

展示图标

android5.0不鼓励在actionbar展示图标,虽然可以通过代码加上:

getSupportActionBar().setDisplayShowHomeEnabled(true);//是否允许展示logo或者icon        getSupportActionBar().setLogo(R.mipmap.ic_launcher);        getSupportActionBar().setDisplayUseLogoEnabled(true);//展示logo而不是图标,logo更为清晰细腻

动作项

当你想向ActionBar添加基本动作时,可以加载在上下文菜单中,如果特别的指定的话他们就会出现在顶部右部。
活动从onCreateOptionsMenu 中提取创造actionbar

public class MainActivity extends AppCompatActivity {    @Override    public boolean onCreateOptionsMenu(Menu menu) {        //记载菜单,加载项 adds items to the action bar if it is present.        getMenuInflater().inflate(R.menu.menu_main, menu);        return true;    }}

我们需要新建一个布局res/menu/menu_main.xml

<menu xmlns:android="http://schemas.android.com/apk/res/android"      xmlns:app="http://schemas.android.com/apk/res-auto">    <item        android:id="@+id/miCompose"        android:icon="@drawable/ic_compose"        app:showAsAction="ifRoom"        android:title="Compose">    </item>    <item        android:id="@+id/miProfile"        android:icon="@drawable/ic_profile"        app:showAsAction="ifRoom|withText"        android:title="Profile">    </item></menu>

应该记住xmlns:app 命名空间支持了showAction 的操作,ifRoom表明这个选项需要直接作为一个图标出现在actionbar上,如果没有空间的话就会出现动作溢出,withText表明文本将和图标一起出现。

处理点击事件

使用android:onClick="onComposeAction" 然后定义onComposeAction方法。
方法二:重写onOptionsItemSelected() 对于传递的MenuItem项可以使用getItemId方法来识别,然后进行相应的操作。

@Overridepublic boolean onOptionsItemSelected(MenuItem item) {    // Handle presses on the action bar items    switch (item.getItemId()) {        case R.id.miCompose:            composeMessage();            return true;        case R.id.miProfile:            showProfileView();            return true;        default:            return super.onOptionsItemSelected(item);    }}

理解ToolBar

在API21开始引进,可以作为ActionBar的替代者,它被认为是一个ViewGroup 可以被放置在布局中的任何位置,而且相对于ActionBar外观更同意定制,具有很好的兼容性,存在于android.support.v7.widget.ToolBar 类中

0 0