zoukankan      html  css  js  c++  java
  • 安卓学习-界面-ui-菜单ActionBar

    安卓学习-界面-ui-菜单ActionBar

    什么是actionbar

    如下图这个就是

    1.actionbar里添加按钮,通过代码添加

    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) {
            //设置菜单
            MenuItem item1=menu.add(0, 0, 1, "添加");
            MenuItem item2=menu.add(0, 0, 3, "删除");
            MenuItem item3=menu.add(0, 0, 2, "修改");
            //绑定到actionbar
            item1.setShowAsAction(MenuItem.SHOW_AS_ACTION_IF_ROOM);
            item2.setShowAsAction(MenuItem.SHOW_AS_ACTION_IF_ROOM);
            item3.setShowAsAction(MenuItem.SHOW_AS_ACTION_IF_ROOM);
                    
            return super.onCreateOptionsMenu(menu);
        }
    
        public boolean onMenuItemSelected(int featureId, MenuItem item) {
            Toast.makeText(MainActivity.this, item.getTitle(), Toast.LENGTH_SHORT).show();
            
            return super.onMenuItemSelected(featureId, item);
        }
        
        
    }
    View Code

     2.通过xml配置文件添加

    主要是item后面要添加 android:showAsAction="always",否则显示的是菜单,不是按钮

    没添加的效果

    添加后效果

    若是在按钮太多显示不下,则可以添加android:showAsAction="collapseActionView",效果如下

    menu1.xml

    <?xml version="1.0" encoding="utf-8"?>
    <menu xmlns:android="http://schemas.android.com/apk/res/android" >
        <item android:id="@+id/item1" android:orderInCategory="1" android:title="添加" android:showAsAction="always"/>
        <item android:id="@+id/item2" android:orderInCategory="3" android:title="删除" android:showAsAction="always"/>
        <item android:id="@+id/item3" android:orderInCategory="2" android:title="修改" android:showAsAction="always"/>
    </menu>
    View Code

    MainActivity.java

    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) {
            MenuInflater inflater=getMenuInflater();
            inflater.inflate(R.menu.menu1, menu);
                    
            return super.onCreateOptionsMenu(menu);
        }
    
        public boolean onMenuItemSelected(int featureId, MenuItem item) {
            Toast.makeText(MainActivity.this, item.getTitle(), Toast.LENGTH_SHORT).show();
            
            return super.onMenuItemSelected(featureId, item);
        }
    }
    View Code

     3.甚至actionbar为tabs

    Tab1Fragment.java

    public class Tab1Fragment extends Fragment{
    
        @Override
        public View onCreateView(LayoutInflater inflater, ViewGroup container,
                Bundle savedInstanceState) {
            
            return inflater.inflate(R.layout.tab1, container, false);
        }
        
    }
    View Code

    tab1.xml

    <?xml version="1.0" encoding="utf-8"?>
    <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        android:orientation="vertical" >
    
        <ProgressBar
            android:id="@+id/progressBar1"
            style="?android:attr/progressBarStyleLarge"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content" />
    
    </LinearLayout>
    View Code

    还有2个tab,反正也一样

    MainActivity.java

    public class MainActivity extends Activity {
    
        ActionBar bar;
        
        @Override
        protected void onCreate(Bundle savedInstanceState) {
            super.onCreate(savedInstanceState);
            setContentView(R.layout.activity_main);
            
            bar=getActionBar();
            //bar.hide();
            
            bar.setDisplayShowTitleEnabled(false);
             bar.setNavigationMode(ActionBar.NAVIGATION_MODE_TABS);
            
            ActionBar.Tab tab1=bar.newTab().setText("页面1");
            ActionBar.Tab tab2=bar.newTab().setText("页面2");
            ActionBar.Tab tab3=bar.newTab().setText("页面3");
    
            Fragment fragment1 = new Tab1Fragment();
            tab1.setTabListener(new MyTabsListener(fragment1));
            bar.addTab(tab1);
            
            Fragment fragment2 = new Tab2Fragment();
            tab2.setTabListener(new MyTabsListener(fragment2));
            bar.addTab(tab2);
            
            Fragment fragment3 = new Tab3Fragment();
            tab3.setTabListener(new MyTabsListener(fragment3));
            bar.addTab(tab3);
        }
        
        public class  MyTabsListener implements ActionBar.TabListener{
    
            private Fragment fragment;
            
             public MyTabsListener(Fragment fragment)
                {
                    this.fragment = fragment;
                }
            
            @Override
            public void onTabSelected(Tab tab, FragmentTransaction ft) {
                // TODO 自动生成的方法存根
                ft.add(R.id.layout1, fragment, null);
                
            }
    
            @Override
            public void onTabUnselected(Tab tab, FragmentTransaction ft) {
                 ft.remove(fragment);
                
                
            }
    
            @Override
            public void onTabReselected(Tab tab, FragmentTransaction ft) {
                // TODO 自动生成的方法存根
                
            }
            
            
        }
        
    }
    View Code

    activity_main.xml

    <RelativeLayout 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"
        tools:context="${relativePackage}.${activityClass}" >
    
        <LinearLayout
            android:id="@+id/layout1"
            android:layout_width="match_parent"
            android:layout_height="match_parent"
            android:layout_alignParentLeft="true"
            android:layout_alignParentRight="true"
            android:layout_alignParentTop="true"
            android:orientation="vertical" >
    
        </LinearLayout>
    
    </RelativeLayout>
    View Code

     4.ActionBar 显示为list

    tabs页面参照上面

    activity_main.java

    public class MainActivity extends Activity {
    
        ActionBar bar;
    
        @Override
        protected void onCreate(Bundle savedInstanceState) {
            super.onCreate(savedInstanceState);
            setContentView(R.layout.activity_main);
            
            bar=getActionBar();
            //bar.hide();
            
            bar.setDisplayShowTitleEnabled(false);
            bar.setNavigationMode(ActionBar.NAVIGATION_MODE_LIST);
    
            ArrayAdapter<String> adapter=new ArrayAdapter<>(MainActivity.this, android.R.layout.simple_list_item_1,
                    android.R.id.text1, new String[]{"页面1","页面2","页面3"});
            
            bar.setListNavigationCallbacks(adapter,new OnNavigationListener() {
                @Override
                public boolean onNavigationItemSelected(int itemPosition, long itemId) {
                    
                    Fragment fragment=null;
                    if(itemPosition==0){
                        fragment = new Tab1Fragment();
                    }else if (itemPosition==1){
                        fragment = new Tab2Fragment();
                    }else if (itemPosition==2){
                        fragment = new Tab3Fragment();
                    }
                    
                    FragmentTransaction tr=getFragmentManager().beginTransaction();
                    tr.replace(R.id.layout1, fragment);
                    tr.commit();
                    
                    return true;
                }
            });
        }
    }
    View Code

    activity_main.xml

    <RelativeLayout 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"
        tools:context="${relativePackage}.${activityClass}" >
    
        <LinearLayout
            android:id="@+id/layout1"
            android:layout_width="match_parent"
            android:layout_height="match_parent"
            android:layout_alignParentLeft="true"
            android:layout_alignParentRight="true"
            android:layout_alignParentTop="true"
            android:orientation="vertical" >
    
        </LinearLayout>
    
    </RelativeLayout>
    View Code
  • 相关阅读:
    代码命名,代码里的命名规则:错误的和正确的对比 命名方法总结 “自我描述的源代码”用代码表达出你的思想,让其他人通过代码能明白你的意图。
    201508整理:前端工程师的(现在主要的问题、工作选择、技术前景未来)
    java小程序,用java在指定目录或以及子目录中找出同名文件,java File过滤文件名后找同名文件
    excel中的数据粘贴不全到plsql中,excel 粘贴后空白,Excel复制粘贴内容不全
    漫画的由来,卡通漫画、暴走漫画、先锋漫画、漫画与前卫艺术之间的边缘艺术形式、实用漫画、讽刺漫画、幽默漫画的定义
    人性漫画:一个人成功前和成功后赤裸裸的区别 人成功前后对比 成功人发展由来前后结果
    解决IE弹框提示“是否停止运行此脚本”问题
    用UltraEdit判断打开文件的编码类型 用UltraEdit或notepad记事本查看文件编码格式 用UltraEdit查看当前文件编码
    Oracle pl/sql导入sql文件,插入更新数据,中文乱码问题解决方案
    毕胜自述:我是如何把奢侈品打到白菜价的 制造业的电子商务中国零售 小米启示录
  • 原文地址:https://www.cnblogs.com/weijj/p/4048533.html
Copyright © 2011-2022 走看看