zoukankan      html  css  js  c++  java
  • titlebar和actionbar上的按钮设置

    ---恢复内容开始---

    Actionbar加按钮:

    在res文件夹下新建menu文件夹(如果你没有),然后添加一个XML文件

    <?xml version="1.0" encoding="utf-8"?>
    <menu xmlns:tools="http://schemas.android.com/tools"
        xmlns:android="http://schemas.android.com/apk/res/android">
        <!-- action items -->  
        <!-- showAsAction默认为never -->  
        <item  
            android:id="@+id/delete1"  
            android:icon="@android:drawable/ic_menu_camera"  
            android:showAsAction="always"  
            android:title="拍照"/>  
        <item  
            android:id="@+id/add"  
            android:icon="@android:drawable/ic_menu_add"  
            android:showAsAction="ifRoom"  
            android:title="添加">  
        </item>  
        <item  
            android:id="@+id/delete2"  
            android:icon="@android:drawable/ic_menu_edit"  
            android:showAsAction="ifRoom"  
            android:title="编辑"/>  
        <item  
            android:id="@+id/share"  
            android:icon="@android:drawable/ic_menu_share"  
            android:showAsAction="never"  
            android:title="分享"/>  
        <item  
            android:id="@+id/call"  
            android:icon="@android:drawable/ic_menu_call"  
            android:showAsAction="never"  
            android:title="呼叫"/>  
        <item  
            android:id="@+id/delete3"  
            android:icon="@android:drawable/ic_menu_help"  
            android:showAsAction="never"  
            android:title="帮助"/>  
      
        <!-- action views -->  
        <item  
            android:id="@+id/search"  
            android:actionViewClass="android.widget.SearchView"  
            android:showAsAction="always"  
            android:title="查询"/>  
        <item  
            android:id="@+id/clock"  
            android:actionLayout="@layout/actionbar_layout_menu"  
            android:showAsAction="always"  
            android:title="时钟"/>  
      
    </menu>

    时钟布局文件actionbar_layout_menu.xml:

    <?xml version="1.0" encoding="utf-8"?>  
    <AnalogClock xmlns:android="http://schemas.android.com/apk/res/android"  
        android:layout_width="wrap_content"  
        android:layout_height="wrap_content" >  
      
    </AnalogClock>  

    现在在activity里设置

    public class MainActivity extends Activity {  
      
        @Override  
        protected void onCreate(Bundle savedInstanceState) {  
            super.onCreate(savedInstanceState);  
            setContentView(R.layout.activity_main);  
      
            ActionBar actionBar = getActionBar();  
            // 是否显示应用程序图标,默认为true  
            actionBar.setDisplayShowHomeEnabled(true);  
            // 是否显示应用程序标题,默认为true  
            actionBar.setDisplayShowTitleEnabled(true);  
      
            /* 
             * 是否将应用程序图标转变成可点击的按钮,默认为false。 
             *  
             * 如果设置了DisplayHomeAsUpEnabled为true, 
             *  
             * 则该设置自动为 true。 
             */  
            actionBar.setHomeButtonEnabled(true);  
            /* 
             * 在应用程序图标的左边显示一个向左的箭头, 
             *  
             * 并且将HomeButtonEnabled设为true。 
             *  
             * 默认为false。 
             */  
            actionBar.setDisplayHomeAsUpEnabled(true);  
      
            forceShowOverflowMenu();  
      
        }  
      
        /** 
         * 如果设备有物理菜单按键,需要将其屏蔽才能显示OverflowMenu 
         */  
        private void forceShowOverflowMenu() {  
            try {  
                ViewConfiguration config = ViewConfiguration.get(this);  
                Field menuKeyField = ViewConfiguration.class  
                        .getDeclaredField("sHasPermanentMenuKey");  
                if (menuKeyField != null) {  
                    menuKeyField.setAccessible(true);  
                    menuKeyField.setBoolean(config, false);  
                }  
            } catch (Exception e) {  
                e.printStackTrace();  
            }  
        }  
      
        @Override  
        public boolean onCreateOptionsMenu(Menu menu) {  
            MenuInflater inflater = getMenuInflater();  
            inflater.inflate(R.menu.actionbar_menu, menu);  
            return super.onCreateOptionsMenu(menu);  
        }  
      
        @Override  
        public boolean onOptionsItemSelected(MenuItem item) {  
            switch (item.getItemId()) {  
            /* 
             * 将actionBar的HomeButtonEnabled设为ture, 
             *  
             * 将会执行此case 
             */  
            case android.R.id.home:  
                finish();  
                break;  
            case R.id.menu_setting:  
                Toast.makeText(this, "设置", Toast.LENGTH_LONG).show();  
                break;  
            // 其他省略...  
            default:  
                break;  
            }  
            return super.onOptionsItemSelected(item);  
        }  
      
        @Override  
        public boolean onMenuOpened(int featureId, Menu menu) {  
            setOverflowIconVisible(featureId, menu);  
            return super.onMenuOpened(featureId, menu);  
        }  
      
        /** 
         * 显示OverflowMenu的Icon 
         *  
         * @param featureId 
         * @param menu 
         */  
        private void setOverflowIconVisible(int featureId, Menu menu) {  
            if (featureId == Window.FEATURE_ACTION_BAR && menu != null) {  
                if (menu.getClass().getSimpleName().equals("MenuBuilder")) {  
                    try {  
                        Method m = menu.getClass().getDeclaredMethod(  
                                "setOptionalIconsVisible", Boolean.TYPE);  
                        m.setAccessible(true);  
                        m.invoke(menu, true);  
                    } catch (Exception e) {  
                        Log.d("OverflowIconVisible", e.getMessage());  
                    }  
                }  
            }  
        }  
      
    }  

    转自:http://blog.csdn.net/zhangzeyuaaa/article/details/40783681

    Titlebar加自定义按钮:

    在activity的onCreate()里加入代码,这几行代码添加的时候要注意顺序

    requestWindowFeature(Window.FEATURE_CUSTOM_TITLE); 
    setContentView(R.layout.activity_main);
    getWindow().setFeatureInt(Window.FEATURE_CUSTOM_TITLE,R.layout.title); 

    title.xml的话就放自己需要的东西

    <?xml version="1.0" encoding="utf-8"?>
    <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
        android:orientation="vertical" android:layout_width="match_parent"
        android:layout_height="48dp">
    <Button
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="test"/>
    </LinearLayout>

    在清单文件中需要设置的activity里添加theme属性

    android:theme="@style/titlebarstyle"

    这是个自定义的style

    <style name="CustomizedWindowTitleBackground">
            <item name="android:background">#047BF0</item>
        </style>
        <style name="titlebarstyle" parent="android:Theme">
            <item name="android:windowTitleSize">48dp</item>
            <item name="android:windowTitleBackgroundStyle">@style/CustomizedWindowTitleBackground</item>
            <!-- All customizations that are NOT specific to a particular API-level can go here. -->
        </style>

    ---恢复内容结束---

  • 相关阅读:
    application , application pool., W3wp ,httpapplication, domain
    HDFS
    spark
    Hive
    container docker
    Azure&& hdinsight
    Native Code
    拥抱重构
    六个重构方法可帮你提升80%的代码质量
    重构 小步进行曲
  • 原文地址:https://www.cnblogs.com/Sharley/p/6108969.html
Copyright © 2011-2022 走看看