actionBar活动条的简单使用,添加控件和布局

活动条的使用-1:在活动条中添加图片和文字:

下面代码中的序号分别代表:

代码如下:  studio需要android.support.v7.app.ActionBar actionBar = getSupportActionBar();

import android.os.Bundle;
import android.app.ActionBar;
import android.app.Activity;
import android.graphics.Color;
import android.graphics.drawable.ColorDrawable;
import android.view.Menu;
import android.view.MenuItem;
import android.view.View;
import android.view.View.OnClickListener;
import android.view.Window;
import android.widget.TextView;

public class MainActivity extends Activity implements OnClickListener {

    private ActionBar actionBar;
    private TextView textView;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        //设置actionbar悬浮在activity上显示
        requestWindowFeature(Window.FEATURE_ACTION_BAR_OVERLAY);
        setContentView(R.layout.activity_main);
        
        //获取actionbar
        actionBar = getActionBar();
//常用的api
          //设置活动条背景色
          actionBar.setBackgroundDrawable(new ColorDrawable(Color.parseColor("#778899")));
          //设置返回图标是否显示(左侧的小箭头),下面两个属性必须有一个是true状态,才会显示返回图标  -----(1)
          actionBar.setDisplayHomeAsUpEnabled(true);
          //设置标题是否可用,false代表不显示活动条中的文本----------(3)
          actionBar.setDisplayShowTitleEnabled(true);
          //设置图标是否可用,显示与不显示-------------------(2)
          actionBar.setDisplayShowHomeEnabled(true);
          //设置actionBar的标题-------------------(3)
          actionBar.setTitle("活动条");
          //设置Activity标题-------(3) 当与setTetle同在的时候,显示setTitle的设置
          setTitle("activity");
          
          textView = (TextView) findViewById(R.id.textView);
          findViewById(R.id.btn_hide).setOnClickListener(this);
          findViewById(R.id.btn_show).setOnClickListener(this);
    }

    @Override
    public boolean onCreateOptionsMenu(Menu menu) {
        getMenuInflater().inflate(R.menu.main, menu);
        return true;
    }
    
    @Override
    public boolean onOptionsItemSelected(MenuItem item) {
        switch (item.getItemId()) {
        case android.R.id.home://活动条中左侧小箭头返回按钮的单机事件
            textView.setTextColor(Color.YELLOW);
            break;
        case R.id.action_blue:
            textView.setTextColor(Color.BLUE);
            break;
        case R.id.action_green:
            textView.setTextColor(Color.GREEN);
            break;
        case R.id.action_40:
            textView.setTextSize(40);
            break;
        case R.id.action_30:
            textView.setTextSize(30);
            break;
        }
        return super.onOptionsItemSelected(item);
    }
    
    /**
     * 按钮单击事件
     */
    @Override
    public void onClick(View v) {
        switch (v.getId()) {
        case R.id.btn_hide:
            actionBar.hide();//隐藏活动条
            break;
        case R.id.btn_show:
            actionBar.show();//显示活动条
            break;
        }
    }
    
}

布局文件:

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:tools="http://schemas.android.com/tools"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:orientation="vertical"
    tools:context=".MainActivity" >

    <Button
        android:id="@+id/btn_show"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:text="显示actoinBar" />

    <Button
        android:id="@+id/btn_hide"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:text="隐藏actionBar" />
    <TextView
        android:id="@+id/textView"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:textSize="25sp"
        android:text="点击菜单改变字体颜色" />

</LinearLayout>

菜单布局文件main.xml

<menu xmlns:android="http://schemas.android.com/apk/res/android" >
  <!--
  showAsAction:  用来控制菜单的显示位置
       当时同时设置了 titile和icon属性的时候 icon属性优先于title显示 ,
       在折叠菜单中不会显示icon,只会显示title
       在actionBar中长按图标会显示title的值
  showAsAction的属性值:
     never 从来不显示在actionbar始终显示在折叠菜单中(三个点里)
     always  始终显示在actionbar上
     ifRoom  如果actionbar上有空间,将该图标显示在actionbar上,需要和下面属性一起使用才有效
     withText  通常配合ifroom使用,当actionbar上有足够的空间的时候,会将图标和文本同时显示
     collapseActionView   通常配合ifroom使用,当actionbar上有足够的空间的时候,会将菜单卷缩成图片
-->
    <item
        android:id="@+id/action_green"
        android:orderInCategory="100"
        android:showAsAction="never"
        android:title="绿色"/>
    <item
        android:id="@+id/action_blue"
        android:orderInCategory="101"
        android:showAsAction="never"
        android:title="蓝色"/>
    <item
        android:id="@+id/action_red"
        android:orderInCategory="102"
        android:showAsAction="never"
        android:title="红色"/>
    <item
        android:id="@+id/action_text_size"
        android:showAsAction="always"
        android:icon="@drawable/app_sample_code"        //设置为显示图片
        android:title="设置字体">
        <menu>
            <!-- 子菜单不能显示到actionBar中 -->
            <item
                android:id="@+id/action_40"
                android:showAsAction="ifRoom|collapseActionView"
                android:title="40sp"/>
            <item
                android:id="@+id/action_30"
                android:showAsAction="ifRoom|collapseActionView"
                android:title="30sp"/>
        </menu>
    </item>
</menu>

效果:

活动条的使用-2:在活动条中添加控件和布局:

import android.app.Activity;
import android.os.Bundle;
import android.util.Log;
import android.view.Menu;
import android.view.MenuItem;
import android.view.View;
import android.widget.Button;
import android.widget.SearchView;
import android.widget.SearchView.OnQueryTextListener;

public class MainActivity extends Activity {

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
    }
    /**
     * 创建菜单
     */
    @Override
    public boolean onCreateOptionsMenu(Menu menu) {
        //将main中的菜单布局文件添加到menu中
        getMenuInflater().inflate(R.menu.main, menu);
        //根据menu的id找到对应的menuitem
        MenuItem menuItem = menu.findItem(R.id.search);
        //拿到menuitem中的searchview控件
        SearchView  searchView  = (SearchView) menuItem.getActionView();
        //设置提交按钮
        searchView.setSubmitButtonEnabled(true);
        //给searchview设置监听
        searchView.setOnQueryTextListener(new OnQueryTextListener() {
            
            @Override
            public boolean onQueryTextSubmit(String query) {
                
                Log.i("MainActivity", query);
                return false;
            }
            
            @Override
            public boolean onQueryTextChange(String newText) {
                // TODO Auto-generated method stub
                return false;
            }
        });
        
        //在menu中找到对应的布局文件
        MenuItem menuItemLayout = menu.findItem(R.id.action_custom_layout);
        View view  = menuItemLayout.getActionView();
        //找到view中的控件
        Button btnLogin = (Button) view.findViewById(R.id.btn_login);
        Button btnSure = (Button) view.findViewById(R.id.btn_sure);
        //给自定义的布局中的button设置点击事件
        btnLogin.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                Log.i("MainActivity", "btnLogin");
            }
        });
        
        return true;
    }

}

菜单布局文件,main.xml:

<menu xmlns:android="http://schemas.android.com/apk/res/android" >

 <!-- 将控件(SearchView搜索视图)添加到actionBar -->
    <item 
        android:id="@+id/search"
        android:showAsAction="always"
        android:actionViewClass="android.widget.SearchView"
        android:title="搜索"
        />
 <!-- 将布局文件添加到actionBar 该布局为两个按钮-->
    <item 
        android:id="@+id/action_custom_layout"
        android:showAsAction="always"
        android:icon="@drawable/p12"
        android:actionLayout="@layout/menu_custom_layout"
        />

</menu>

效果图:

posted @ 2016-08-22 13:57  ts-android  阅读(866)  评论(0编辑  收藏  举报