Android界面编程--使用活动条(ActionBar)--添加Action View

时间:2023-03-10 05:59:53
Android界面编程--使用活动条(ActionBar)--添加Action View

ActionBar除了显示Action Item 外,还能显示普通的ui组件

  2种方式添加Action View

    1.指定ActionView的实现类

    2.指定ActionView对应的视图资源

实现代码:

 package com.example.administrator.myapplication;

 import android.support.v4.view.MenuItemCompat;
import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.view.Menu;
import android.view.MenuInflater; public class MainActivity extends AppCompatActivity { @Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
} @Override
public boolean onCreateOptionsMenu(Menu menu) {
MenuInflater inflater = new MenuInflater(this);
inflater.inflate(R.menu.menu_main,menu);
       //重要代码,照着书上写的话,这些ActionView显示不出来,网上找的这个解决方法,目前有效
MenuItemCompat.setShowAsAction(menu.findItem(R.id.search),MenuItemCompat.SHOW_AS_ACTION_ALWAYS);
MenuItemCompat.setShowAsAction(menu.findItem(R.id.progess),MenuItemCompat.SHOW_AS_ACTION_ALWAYS);
return super.onCreateOptionsMenu(menu);
}
}

资源文件代码:menu文件下的

 <?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:title="@string/app_name"
android:id="@+id/search"
android:orderInCategory="100"
app:showAsAction="always"
android:actionViewClass="android.widget.SearchView">
</item>
<item android:title="@string/app_name"
android:id="@+id/progess"
android:orderInCategory="100"
app:showAsAction="always"
android:actionLayout="@layout/clock"> </item>
</menu>