android ActionBar用法詳解

來源:互聯網
上載者:User

標籤:

一、ActionBar介紹

       ActionBar是位於Activity頂部,用於顯示Activity的表徵圖,標題,以及菜單的。可用於導航等功能,廣泛應用於View的互動。ActionBar可分為三部分,分別是第一Icon、第二Item、第三overflow按鈕。

   

     二、如何添加ActionBar。(ActionBar 是在Android 3.0(API 11)中加入到SK中的,想在低版本中使用ActionBar使用Support Library v7。)

     1、建立activity繼承自AppCompatActivty.

      

public class MainActivity extends AppCompatActivity {    @Override    protected void onCreate(Bundle savedInstanceState) {        super.onCreate(savedInstanceState);        setContentView(R.layout.activity_main);    }}
    2、實現Theme.AppCompat.Light.DarkActionBar主題

     

 <application        android:allowBackup="true"        android:icon="@mipmap/ic_launcher"        android:label="@string/app_name"        android:supportsRtl="true"        android:theme="@style/AppTheme">        <activity android:name=".MainActivity">            <intent-filter>                <action android:name="android.intent.action.MAIN" />                <category android:name="android.intent.category.LAUNCHER" />            </intent-filter>        </activity>    </application>
   style檔案主題配置。

    

<resources>    <!-- Base application theme. -->    <style name="AppTheme" parent="Theme.AppCompat.Light.DarkActionBar">        <!-- Customize your theme here. -->        <item name="colorPrimary">@color/colorPrimary</item>        <item name="colorPrimaryDark">@color/colorPrimaryDark</item>        <item name="colorAccent">@color/colorAccent</item>    </style></resources>
     3、下面為大家圖解一下theme主題設定檔中的樣式都有哪些,前人總結的。

    

  4、最終如下

    

三、移除ActionBar。

     1、修改theme主題

<style name="AppTheme" parent="Theme.AppCompat.Light.NoActionBar">        <!-- Customize your theme here. -->        <item name="colorPrimary">#55A028</item>        <item name="colorPrimaryDark">@color/colorPrimaryDark</item>        <item name="colorAccent">@color/colorAccent</item>    </style>
   2、代碼中修改。

    

package com.example.cdy.actionbardemo;import android.support.v7.app.ActionBar;import android.support.v7.app.AppCompatActivity;import android.os.Bundle;public class MainActivity extends AppCompatActivity {    @Override    protected void onCreate(Bundle savedInstanceState) {        super.onCreate(savedInstanceState);        setContentView(R.layout.activity_main);        //得到actionBar,注意我的是V7包,使用getSupportActionBar()        ActionBar actionBar = getSupportActionBar();        //隱藏actionBar        actionBar.hide();    }}
四、修改actionBar的樣式

 1、修改ActionBar的表徵圖。

      ActionBar的標題預設是繼承了Applicition和Activity的lable屬性,所以只需要修改activity的lable屬性即可。值得一提的是,老的版本中修改icon也是預設繼承自logo屬性,但是發現前段時間更新之後就無法顯示了,需要代碼中設定。

   

 <activity android:name=".MainActivity"            android:label="@string/actionBar_title">            <intent-filter>                <action android:name="android.intent.action.MAIN" />                <category android:name="android.intent.category.LAUNCHER" />            </intent-filter>        </activity>
 
public class MainActivity extends AppCompatActivity {    @Override    protected void onCreate(Bundle savedInstanceState) {        super.onCreate(savedInstanceState);        //得到actionBar,注意我的是V7包,使用getSupportActionBar()        ActionBar actionBar = getSupportActionBar();        //在使用v7包的時候顯示icon和標題需指定一下屬性。        actionBar.setDisplayShowHomeEnabled(true);        actionBar.setLogo(R.mipmap.back_black);        actionBar.setDisplayUseLogoEnabled(true);        setContentView(R.layout.activity_main);    }
  2、

   

     五、添加item和overfloy。

  1、把所有的action item定義在menu的資源檔中。showAsAction(此item如何顯示在actionBar上) icon(表徵圖) title(標題)。showAsAction屬性,never不顯示在actionBar上,ifRoom如果有空間就顯示,沒空間就顯示在overflow上,always只顯示在actionbar上。

        

<?xml version="1.0" encoding="utf-8"?><menu xmlns:android="http://schemas.android.com/apk/res/android"    xmlns:app="http://schemas.android.com/apk/res-auto">    <item        android:id="@+id/action_delete"        android:orderInCategory="100"        app:showAsAction="never"        android:icon="@mipmap/ic_launcher"        android:title="刪除"/>    <item        android:id="@+id/action_add"        android:orderInCategory="100"        app:showAsAction="ifRoom"        android:icon="@mipmap/ic_launcher"        android:title="添加"/>    <item        android:id="@+id/action_select"        android:orderInCategory="100"        app:showAsAction="always"        android:icon="@mipmap/ic_launcher"        android:title="選擇"/></menu>
 2、在activity中引用資源檔。

  

package com.example.cdy.actionbardemo;import android.support.v7.app.ActionBar;import android.support.v7.app.AppCompatActivity;import android.os.Bundle;import android.view.Menu;import android.view.MenuInflater;import android.view.MenuItem;import android.widget.Toast;public class MainActivity extends AppCompatActivity {    @Override    protected void onCreate(Bundle savedInstanceState) {        super.onCreate(savedInstanceState);        //得到actionBar,注意我的是V7包,使用getSupportActionBar()        ActionBar actionBar = getSupportActionBar();        //在使用v7包的時候顯示icon和標題需指定一下屬性。        actionBar.setDisplayShowHomeEnabled(true);        actionBar.setLogo(R.mipmap.back_black);        actionBar.setDisplayUseLogoEnabled(true);        setContentView(R.layout.activity_main);    }    /**     * @param menu     * @return     * 使用菜單     */    @Override    public boolean onCreateOptionsMenu(Menu menu) {        MenuInflater inflater = getMenuInflater();        inflater.inflate(R.menu.actionbar_menu, menu);        return super.onCreateOptionsMenu(menu);    }    /**     * @param item     * @return     * item的點擊事件     */    @Override    public boolean onOptionsItemSelected(MenuItem item) {        switch (item.getItemId()) {            // action with ID action_refresh was selected            case R.id.action_delete:                Toast.makeText(this, "刪除", Toast.LENGTH_SHORT).show();                break;            // action with ID action_settings was selected            case R.id.action_add:                Toast.makeText(this, "添加", Toast.LENGTH_SHORT).show();                break;            case R.id.action_select:                Toast.makeText(this, "選擇", Toast.LENGTH_SHORT).show();                break;            default:                break;        }        return super.onOptionsItemSelected(item);    }}
3、效果


   

   六、使用自訂的view添加到actionBar上。

    1、自訂layout_actionbar.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:gravity="center_vertical"    android:paddingLeft="10dp"    android:paddingRight="10dp" >    <ImageButton        android:id="@+id/left_imbt"        android:layout_width="wrap_content"        android:layout_height="wrap_content"        android:layout_alignParentLeft="true"        android:layout_centerVertical="true"        android:background="@mipmap/back_black"        />    <TextView        android:id="@+id/bar_title"        android:layout_width="wrap_content"        android:layout_height="wrap_content"        android:layout_centerInParent="true"        android:textColor="#FFFFFFFF"        android:textSize="18sp"        android:text="標題" />    <!-- actionbar 右邊按鈕 -->    <TextView        android:id="@+id/right_bt"        android:layout_width="wrap_content"        android:layout_height="wrap_content"        android:layout_alignParentRight="true"        android:layout_centerVertical="true"        android:textSize="18sp"        android:background="@null"        /></RelativeLayout>
 2、在activity中引用,並且得到控制項

  

package com.example.cdy.actionbardemo;import android.graphics.Color;import android.support.v7.app.ActionBar;import android.support.v7.app.AppCompatActivity;import android.os.Bundle;import android.view.LayoutInflater;import android.view.Menu;import android.view.MenuInflater;import android.view.MenuItem;import android.view.View;import android.widget.TextView;import android.widget.Toast;public class MainActivity extends AppCompatActivity {    //聲明控制項    TextView bar_title;    TextView right_bt;    @Override    protected void onCreate(Bundle savedInstanceState) {        super.onCreate(savedInstanceState);        //得到actionBar,注意我的是V7包,使用getSupportActionBar()        ActionBar actionBar = getSupportActionBar();        //在使用v7包的時候顯示icon和標題需指定一下屬性。        actionBar.setDisplayShowHomeEnabled(true);        //actionBar.setLogo(R.mipmap.back_black);        actionBar.setDisplayUseLogoEnabled(true);        // 返回箭頭(預設不顯示)        actionBar.setDisplayHomeAsUpEnabled(false);        // 左側表徵圖點擊事件使能        actionBar.setHomeButtonEnabled(true);        //顯示自訂的actionBar        actionBar.setDisplayShowCustomEnabled(true);        View actionbarLayout = LayoutInflater.from(this).inflate(R.layout.layout_actionbar, null);        actionBar.setCustomView(actionbarLayout);        bar_title = (TextView)actionbarLayout.findViewById(R.id.bar_title);        right_bt = (TextView)actionbarLayout.findViewById(R.id.right_bt);        bar_title.setText("我的工作");        right_bt.setText("篩選");        bar_title.setTextColor(Color.WHITE);        right_bt.setTextColor(Color.WHITE);        setContentView(R.layout.activity_main);    }    /**     * @param menu     * @return     * 使用菜單     */    @Override    public boolean onCreateOptionsMenu(Menu menu) {        return super.onCreateOptionsMenu(menu);    }    /**     * @param item     * @return     * item的點擊事件     */    @Override    public boolean onOptionsItemSelected(MenuItem item) {        return super.onOptionsItemSelected(item);    }}
3、效果

  

  ActivityBar的使用大致就介紹到這來,ActivityBar中還有很多的使用方法,和特殊的效果需要我們事先。大家可以好好研究一下。歡迎指正和轉載

android ActionBar用法詳解

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.