Toolbar控件详解
在Activity中添加Toolbar
1.添加库
dependencIEs { ... compile "com.androID.support:appcompat-v7:18.0.+"}
2.Activity要继承AppCompatActivity
3.设置主题
使用Toolbar,要将系统默认的Actionbar隐藏掉
<application androID:theme="@style/theme.AppCompat.light.NoActionbar" />
4.在XML添加Toolbar布局
<androID.support.v7.Widget.Toolbar androID:ID="@+ID/my_toolbar" androID:layout_wIDth="match_parent" androID:layout_height="?attr/actionbarSize" androID:background="?attr/colorPrimary" androID:elevation="4dp" androID:theme="@style/themeOverlay.AppCompat.Actionbar" app:popuptheme="@style/themeOverlay.AppCompat.light"/>
Material Design specification 建议设置 elevation 为 4dp
Toolbar放在Activity的顶部(等于废话)
5.设置Toolbar
在Activity的onCreate()方法中,调用setSupportActionbar()方法,把我们的Toolbar对象传递进去,将我们xml中添加的Toolbar设置为我们这个Activity页面的App bar。
@OverrIDeprotected voID onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentVIEw(R.layout.activity_my); Toolbar myToolbar = (Toolbar) findVIEwByID(R.ID.my_toolbar); setSupportActionbar(myToolbar); }
现在,我们的页面中,应该就会有一个App bar了,默认情况下,这个App bar只会显示一个App的名字和一个带有下拉选项的按钮,也可以在App bar上添加更多的选项按钮
添加并处理一个Action
Toolbar允许在上面添加 *** 作按钮,但是因为Toolbar上空间是有限的,如果一个程序有太多的Action,那么可以将Action添加到下拉菜单中,而不显示在Toolbar上
添加一个Action按钮
可以在XML文件中定义所有我们想添加的 *** 作按钮和下拉列表中的行为,如果想要添加Action,可以在 res/目录下创建一个新的XML文件,添加元素。例如这样
<menu xmlns:androID="http://schemas.androID.com/apk/res/androID" > <!-- "Mark Favorite",should appear as action button if possible --> <item androID:ID="@+ID/action_favorite" androID:icon="@drawable/ic_favorite_black_48dp" androID:title="@string/action_favorite" app:showAsAction="ifRoom"/> <!-- Settings,should always be in the overflow --> <item androID:ID="@+ID/action_settings" androID:title="@string/action_settings" app:showAsAction="never"/></menu>
App:showAsAction 属性是用来设置Action显示在哪,如果我们设置 app:showAsAction =”ifRoom”(示例中最常用的一种方式) ,这个Action将显示在Toolbar上,如果Toolbar上没有足够的控件,则显示在下拉菜单中。如果在程序中设置为 app:showAsAction=”never”,那么这个Action将永远显示在下拉列表中,而不会显示在Toolbar上。
响应 *** 作(回调)
当用户选择了一个Action后,系统会回调 onoptionsItemSelected() 方法并传递 MenuItem 对象,在 onoptionsItemSelected() 的实现中,调用 MenuItem.getItemID() 方法来确定按下了哪个项目。返回的 ID 与您在相应的 元素 AndroID: ID 属性中声明的值匹配。
例如下面
@OverrIDepublic boolean onoptionsItemSelected(MenuItem item) { switch (item.getItemID()) { case R.ID.action_settings: // User chose the "Settings" item,show the app settings UI... return true; case R.ID.action_favorite: // User chose the "Favorite" action,mark the current item // as a favorite... return true; default: // If we got here,the user's action was not recognized. // Invoke the superclass to handle it. return super.onoptionsItemSelected(item); }}
添加一个回到主界面的按钮
应用为了使用户可以方便的回到主界面,Toolbar可以添加一个按钮,直接返回到指定的主界面。
声明主界面(父界面)
需要在清单文件中通过设置 androID: parentActivityname 属性声明,如果要支持旧版本的AndroID设备,需要定义 ,类似这样:
<application ... > ... <!-- The main/home activity (it has no parent activity) --> <activity androID:name="com.example.myfirstapp.MainActivity" ...> ... </activity> <!-- A child of the main activity --> <activity androID:name="com.example.myfirstapp.MyChildActivity" androID:label="@string/Title_activity_child" androID:parentActivityname="com.example.myfirstapp.MainActivity" > <!-- Parent activity Meta-data to support 4.0 and lower --> <Meta-data androID:name="androID.support.PARENT_ACTIVITY" androID:value="com.example.myfirstapp.MainActivity" /> </activity></application>
使用返回按钮
若要使用返回的按钮,需要调用setdisplayHomeAsUpEnabled()方法,类似这样:
@OverrIDeprotected voID onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentVIEw(R.layout.activity_my_child); // my_child_toolbar is defined in the layout file Toolbar myChildToolbar = (Toolbar) findVIEwByID(R.ID.my_child_toolbar); setSupportActionbar(myChildToolbar); // Get a support Actionbar corresponding to this toolbar Actionbar ab = getSupportActionbar(); // Enable the Up button ab.setdisplayHomeAsUpEnabled(true);}
添加Action VIEws
和上面 添加并处理一个Action 类似,只不过设置 showAsAction 为 “ifRoom|collapseActionVIEw” 或者 “never|collapseActionVIEw” 就可以了,类似这样
<item androID:ID="@+ID/action_search" androID:title="@string/action_search" androID:icon="@drawable/ic_search" app:showAsAction="ifRoom|collapseActionVIEw" app:actionVIEwClass="androID.support.v7.Widget.SearchVIEw" />
这里我们添加的是一个带有搜索功能的Search按钮,如果我们要自定义一个自己的按钮,不添加 actionVIEwClass 即可
如果想要配置这个Action,可以在 onCreateOptionsMenu() 的回调里通过 getActionVIEw() 获取到Search对象,类似这样:
@OverrIDepublic boolean onCreateOptionsMenu(Menu menu) { getMenuInflater().inflate(R.menu.main_activity_actions,menu); MenuItem searchItem = menu.findItem(R.ID.action_search); SearchVIEw searchVIEw = (SearchVIEw) MenuItemCompat.getActionVIEw(searchItem); // Configure the search info and add any event Listeners... return super.onCreateOptionsMenu(menu);6 }
感谢阅读,希望能帮助到大家,谢谢大家对本站的支持!
总结以上是内存溢出为你收集整理的Android ToolBar控件详解及实例全部内容,希望文章能够帮你解决Android ToolBar控件详解及实例所遇到的程序开发问题。
如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)