国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁(yè) > 系統(tǒng) > Android > 正文

Android ToolBar控件詳解及實(shí)例

2019-12-12 03:21:07
字體:
來(lái)源:轉(zhuǎn)載
供稿:網(wǎng)友

ToolBar控件詳解

在Activity中添加ToolBar

P1

1.添加庫(kù)

dependencies {  ...  compile "com.android.support:appcompat-v7:18.0.+"}

2.Activity要繼承AppCompatActivity

3.設(shè)置主題

使用ToolBar,要將系統(tǒng)默認(rèn)的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 建議設(shè)置 elevation 為 4dp

Toolbar放在Activity的頂部(等于廢話)

5.設(shè)置ToolBar

在Activity的onCreate()方法中,調(diào)用setSupportActionBar()方法,把我們的ToolBar對(duì)象傳遞進(jìn)去,將我們xml中添加的ToolBar設(shè)置為我們這個(gè)Activity頁(yè)面的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);  }

現(xiàn)在,我們的頁(yè)面中,應(yīng)該就會(huì)有一個(gè)App Bar了,默認(rèn)情況下,這個(gè)App Bar只會(huì)顯示一個(gè)App的名字和一個(gè)帶有下拉選項(xiàng)的按鈕,也可以在App Bar上添加更多的選項(xiàng)按鈕

添加并處理一個(gè)Action

ToolBar允許在上面添加操作按鈕,但是因?yàn)門oolBar上空間是有限的,如果一個(gè)程序有太多的Action,那么可以將Action添加到下拉菜單中,而不顯示在ToolBar上

P2

添加一個(gè)Action按鈕

可以在XML文件中定義所有我們想添加的操作按鈕和下拉列表中的行為,如果想要添加Action,可以在 res/目錄下創(chuàng)建一個(gè)新的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 屬性是用來(lái)設(shè)置Action顯示在哪,如果我們?cè)O(shè)置 app:showAsAction =”ifRoom”(示例中最常用的一種方式) ,這個(gè)Action將顯示在ToolBar上,如果ToolBar上沒(méi)有足夠的控件,則顯示在下拉菜單中。如果在程序中設(shè)置為 app:showAsAction=”never”,那么這個(gè)Action將永遠(yuǎn)顯示在下拉列表中,而不會(huì)顯示在ToolBar上。
響應(yīng)操作(回調(diào))

當(dāng)用戶選擇了一個(gè)Action后,系統(tǒng)會(huì)回調(diào) onOptionsItemSelected() 方法并傳遞 MenuItem 對(duì)象,在 onOptionsItemSelected() 的實(shí)現(xiàn)中,調(diào)用 MenuItem.getItemId() 方法來(lái)確定按下了哪個(gè)項(xiàng)目。返回的 ID 與您在相應(yīng)的 元素 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);  }}

添加一個(gè)回到主界面的按鈕

應(yīng)用為了使用戶可以方便的回到主界面,ToolBar可以添加一個(gè)按鈕,直接返回到指定的主界面。

G1

聲明主界面(父界面)

需要在清單文件中通過(guò)設(shè)置 android: parentActivityName 屬性聲明,如果要支持舊版本的Android設(shè)備,需要定義 ,類似這樣:

<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>

使用返回按鈕

若要使用返回的按鈕,需要調(diào)用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

和上面 添加并處理一個(gè)Action 類似,只不過(guò)設(shè)置 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" />

P3

這里我們添加的是一個(gè)帶有搜索功能的Search按鈕,如果我們要自定義一個(gè)自己的按鈕,不添加 actionViewClass 即可

如果想要配置這個(gè)Action,可以在 onCreateOptionsMenu() 的回調(diào)里通過(guò) getActionView() 獲取到Search對(duì)象,類似這樣:

@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 }

感謝閱讀,希望能幫助到大家,謝謝大家對(duì)本站的支持!

發(fā)表評(píng)論 共有條評(píng)論
用戶名: 密碼:
驗(yàn)證碼: 匿名發(fā)表
主站蜘蛛池模板: 山阴县| 弥渡县| 怀仁县| 关岭| 台前县| 东阳市| 淮北市| 永善县| 吐鲁番市| 城市| 澎湖县| 华坪县| 滨海县| 涿鹿县| 临洮县| 邵阳县| 兴义市| 霍邱县| 佛山市| 广元市| 柞水县| 图们市| 永济市| 南阳市| 宜州市| 奇台县| 木兰县| 循化| 兴化市| 灌云县| 乌兰察布市| 栾川县| 安乡县| 元朗区| 屯昌县| 镇康县| 梧州市| 高密市| 宜君县| 阿瓦提县| 莎车县|