AndroidTraining學(xué)習(xí)------Adding the Action Bar

Adding the Action Bar

Action bar的關(guān)鍵功能包括以下這些:

  • 在app中留一處專門(mén)的空間標(biāo)識(shí)你的app并指明使用者所處的位
  • 通過(guò)可預(yù)見(jiàn)的方式進(jìn)行重要的動(dòng)作
  • 支持導(dǎo)航和視圖切換(標(biāo)簽和下拉菜單)

Setting Up the Action Bar

創(chuàng)建一個(gè)最基本的action bar需要你的app使用一個(gè)支持action bar的activity主題。需要怎樣的主題取決于你的app支持的最低安卓版本辨图。

Support Android 3.0 and Above Only

從Android 3.0開(kāi)始猛蔽,action bar包含在所有使用Theme.Holo主題(或者它的子主題)的activity中,當(dāng)targetSdkVersion或minSdkVersion屬性設(shè)置為“11”或更高時(shí),它是默認(rèn)主題。

Support Android 2.1 and Above

當(dāng)在比Android 3.0更老的版本上添加action bar時(shí),需要你在你的應(yīng)用中導(dǎo)入Android支持庫(kù)甜橱。
一旦有了與你項(xiàng)目集成的支持庫(kù):
1.更新你的activity,使它繼承ActionBarActivity栈戳,例如:

public class MainActivity extends ActionBarActivity{...}

2.在你的配置文件中岂傲,更新你的<application>或獨(dú)立的<activity>元素,使用Theme.AppCompat主題中的一個(gè)子檀,例如:

<activity android:theme:"@style/Theme.AppCompat.Light"...>

Adding Action Bar

Action bar允許你添加與app當(dāng)前上下文有聯(lián)系的最重要行動(dòng)項(xiàng)目的按鈕镊掖。那些直接出現(xiàn)在action bar中的圖標(biāo)和文字被稱為動(dòng)作按鈕,不能在action bar或不那么重要的動(dòng)作被隱藏在下拉菜單中褂痰。

Specify the Action Bar

所有的動(dòng)作按鈕和下拉菜單中的項(xiàng)目都定義在一個(gè)XML menu resource中亩进,為了添加action到action bar中,先在你的項(xiàng)目的res/menu/目錄中創(chuàng)建一個(gè)新的XML文件
為每一個(gè)你想放置在action bar中的項(xiàng)目添加<item>元素脐恩,例如:

    <menu xmlns:android="http://schemas.android.com/apk/res/android"
        android:layout_width="match_parent"
        android:layout_height="wrap_content">
        <!-- Search, should appear as action button -->
        <item
            android:id="@+id/action_search"
            android:icon="@drawable/ic_action_search"
            android:showAsAction="ifRoom"
            android:title="@string/action_search" />
        <!-- Settings, should always be in the overflow -->
        <item
            android:id="@+id/action_settings"
            android:showAsAction="never"
            android:title="@string/action_settings" />
    </menu>
  • showAsAction屬性有四個(gè)值:
  • always:這個(gè)值會(huì)使菜單項(xiàng)一直顯示在Action Bar上
  • ifRoom:如果有足夠空間镐侯,這個(gè)值會(huì)使菜單項(xiàng)顯示在Action Bar上
  • never:這個(gè)值使菜單項(xiàng)永遠(yuǎn)不會(huì)顯示在ActionBar上
  • withText:這個(gè)值使菜單項(xiàng)和它的圖標(biāo)侦讨,文本一起顯示
    注意:當(dāng)為你的app創(chuàng)建icon或者bitmap圖片時(shí)驶冒,要為不同屏幕密度下的顯示效果提供多個(gè)優(yōu)化的版本,這一點(diǎn)非常重要韵卤。
    如果你要兼容Android2.1的support庫(kù)骗污,在android:命名空間下showAsAction屬性不能使用。Support庫(kù)提供了替代的屬性沈条,你必須定義你自己的XML命名空間并用該命名空間作為屬性的前綴需忿。(一個(gè)自定義的XML命名空間應(yīng)該以你的app名稱為基礎(chǔ),但是可以取任何你想要的名字,它的作用域僅僅在你的聲明文件范圍之內(nèi))比如:
<menu xmlns:android="http://schemas.android.com/apk/res/android"
          xmlns:yourapp="http://schemas.android.com/apk/res-auto"
         <!--Search,should appear as action button --->
         <item android:id="@+id/action_search"
               android:icon="@drawable/ic_action_search"
               android:title="@string/action_search"
               yourapp:showAsAction="ifRoom"/>
         ...
</menu>

Add the Action to the Action Bar

要為action bar布局菜單項(xiàng)屋厘,就要在activity中實(shí)現(xiàn)onCreateOptionsMenu()回調(diào)方法來(lái)inflate菜單資源從而獲取Menu對(duì)象涕烧,例如:

    @Override
    public boolean onCreateOptionsMenu(Menu menu) {
        //Inflate the menu items for use in the action bar
        MenuInflater inflater = getMenuInflater();
        inflater.inflate(R.menu.main_activity_actions, menu);
        return super.onCreateOptionsMenu(menu);
    } 

Respond to Action Buttons

當(dāng)用戶點(diǎn)擊某一個(gè)操作按鈕或者下拉菜單時(shí),系統(tǒng)會(huì)調(diào)用activity中的onOptionsItemSelected()回調(diào)方法汗洒。在該方法的實(shí)現(xiàn)中會(huì)調(diào)用MenuItem的getItemId()方法去判斷哪個(gè)條目被點(diǎn)擊了--返回的ID會(huì)匹配我們聲明對(duì)應(yīng)的<item>元素中的android:id屬性的值议纯。

    @Override
    public boolean onOptionsItemSelected(MenuItem item) {
        //Handle presses on the action bar items
        switch (item.getItemId()) {
            case R.id.action_search:
                Toast.makeText(MainActivity.this, "you click the search button", Toast.LENGTH_SHORT).show();
                return true;
            case R.id.action_settings:
                Toast.makeText(MainActivity.this, "you click the settings button", Toast.LENGTH_SHORT).show();
                return true;
            default:
                return super.onOptionsItemSelected(item);
        }
    }

Add Up Button for Low-level Activities

在不是程序入口的所有其他屏中(activities不是“home”頁(yè))需要為用戶提供一個(gè)導(dǎo)航到邏輯父屏的Up Button(向上按鈕)。
當(dāng)運(yùn)行在Android4.1或更高的版本溢谤,或者使用Support庫(kù)中的ActionBarActivity時(shí)瞻凤,實(shí)現(xiàn)向上只需要你在manifest文件中定義父activity,并且設(shè)置action bar中的Up Button可用世杀。比如:

    <activity android:name=".DisplayMessageActivity"
        android:label="@string/title_activity_display_message"
        android:parentActivityName=".MainActivity">
    </activity>

然后通過(guò)setDisplayHomeAsUpEnabled()將app icon設(shè)置成可用的Up按鈕:

    @Override
    protected void onCreate(@Nullable Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_displaymessage);

        getSupportActionBar().setDisplayHomeAsUpEnabled(true);
        //If your minSdkVersion is 11 or higher, instead use:
        //getActionBar().setDisplayHomeAsUpEnabled(true);
    }

因?yàn)橄到y(tǒng)現(xiàn)在知道MainActivity時(shí)DisplayMessageActivity的父activity阀参,當(dāng)用戶點(diǎn)擊Up按鈕時(shí),系統(tǒng)會(huì)導(dǎo)航到恰當(dāng)?shù)母竌ctivity--你需要處理Up Button的點(diǎn)擊事件瞻坝。

Styling the Action Bar

Android包括少部分內(nèi)置的activity主題蛛壳,這些主題包括"drak"或"light"action bar樣式。你可以擴(kuò)展這些主題所刀,以便更好地為action bar自定義外觀炕吸。
注意:如果你在action bar中使用了Support庫(kù)的API,你必須使用(或重寫(xiě))Theme.AppCompat家族樣式(甚至Theme.Holo家族樣式勉痴,在API level 11及以上可用)赫模。如此一來(lái),聲明的每個(gè)樣式屬性都必須聲明兩次:一次使用平臺(tái)的樣式屬性(android:屬性)蒸矛,一次使用Support庫(kù)的樣式屬性(appcompat.R.attr 屬性 -- 這些屬性的上下文其實(shí)就是我們的app)瀑罗。

Use an Android Theme

Android包括兩種基本的activity主題,它們決定了action bar的顏色:

  • Theme.Holo for a "drak" theme.

  • Theme.Holo.light for a "light" theme.
    這些主題可以被應(yīng)用到整個(gè)app雏掠,也可以通過(guò)在manifest文件中設(shè)置<application>元素或<activity>元素的android:theme屬性斩祭,對(duì)單一的activities進(jìn)行設(shè)置。比如:

      <application android:theme="@android:style/Theme.Holo.Light".../>
    

通過(guò)聲明Theme.Holo.Light.DarkActionBar可以使action bar為dark乡话,而其余部分為light摧玫。
當(dāng)使用Support庫(kù)時(shí),必須用Theme.AppCompat主題替代:

  • Theme.AppCompat for the "dark" theme.
  • Theme.AppCompat.Light for the "light" theme.
  • Theme.AppCompat.Light.DarkActionBar for the light theme with a dark action bar.
    確保你使用的action bar icon和action bar本身有差異绑青。

Customize the Background

為改變action bar的背景诬像,可以通過(guò)為activity自定義一個(gè)主題,并重寫(xiě)actionBarStyle屬性闸婴。該屬性指向另一個(gè)樣式坏挠,在這個(gè)樣式里,我們可以通過(guò)指定一個(gè)drawable資源來(lái)重寫(xiě)background屬性邪乍。
如果你的app使用了navigation tabs或split action bar降狠,你也可以通過(guò)分別設(shè)置backgroundStacked和backgroundSplit屬性來(lái)為bars指定背景对竣。
警告:聲明合適的父主題非常重要,你自定義的主題和樣式繼承它們的樣式榜配。如果沒(méi)有父樣式否纬,你的action bar將會(huì)失去許多默認(rèn)的樣式屬性,除非我們顯式的對(duì)它們進(jìn)行聲明蛋褥。

For Android 3.0 and higher only

僅當(dāng)支持Android 3.0和更高版本時(shí)烦味,你可以這樣定義action bar的背景:

  <?xml version="1.0" encoding="utf-8"?>
  <resources>
      <!--the theme applied to the application or activity-->
      <style name="CustomActionBarTheme" parent="@style/Theme.AppCompat.Light.DarkActionBar">
          <item name="android:actionBarStyle">@style/MyActionBar</item>
      </style>

      <!--ActionBar styles-->
      <style name="MyActionBar" parent="@style/Widget.AppCompat.Light.ActionBar.Solid.Inverse">
          <item name="android:background">#ff0000</item>
      </style>
  </resources>

然后將我們的主題應(yīng)用到整個(gè)app中或單獨(dú)的activity中:

  android:theme="@style/CustomActionBarTheme"...>

For Android 2.1 and higer

當(dāng)你使用Support庫(kù)時(shí),上面同樣的主題必須替代如下:

  <?xml version="1.0" encoding="utf-8"?>
  <resources>
      <!--the theme applied to the application or activity-->
      <style name="CustomActionBarTheme" parent="@style/Theme.AppCompat.Light.DarkActionBar">
          <item name="android:actionBarStyle">@style/MyActionBar</item>

          <!--Support libray compatibility-->
          <item name="actionBarStyle">@style/MyActionBar</item>
      </style>

      <!--ActionBar styles-->
      <style name="MyActionBar" parent="@style/Widget.AppCompat.Light.ActionBar.Solid.Inverse">
          <item name="android:background">#ff0000</item>

          <!--Support library compatibility-->
          <item name="background">@color/red</item>
      </style>
  </resources>

然后將我們的主題應(yīng)用到整個(gè)app中或單獨(dú)的activity中:

  android:theme="@style/CustomActionBarTheme"...>

Customize the Text Color

為了修改action bar文本的顏色壁拉,你需要重寫(xiě)每個(gè)元素的屬性:

  • Action bar title:創(chuàng)建一個(gè)自定義樣式谬俄,并指定textColor屬性;同時(shí)在我們自定義的actionBarStyle中指定titleTextStyle屬性弃理。
    注意:被應(yīng)用到titleTextStyle的自定義樣式應(yīng)該使用TextAppearance.Holo.Widget.ActionBar.Title 作為父樣式溃论。
  • Action bar tabs:在我們的activity主題中重寫(xiě)actionBarTabTextStyle。
  • Action buttons:在我們的activity主題中重寫(xiě)actionMenuTextColor痘昌。

For Android 3.0 and higher only

當(dāng)僅支持Android3.0和更高版本時(shí)钥勋,你的Style XML文件用該這樣:

  <?xml version="1.0" encoding="utf-8"?>
  <resources>
      <!--the theme applied to the application or activity-->
      <style name="CustomActionBarTheme" parent="@style/Theme.AppCompat">
          <item name="android:actionBarStyle">@style/MyActionBar</item>
          <item name="android:actionBarTabStyle">@style/MyActionBarTabText</item>
          <item name="android:actionMenuTextColor">@color/actionbar_text</item>
      </style>

      <!--ActionBar styles-->
      <style name="MyActionBar" parent="@style/Widget.AppCompat.ActionBar">
          <item name="android:titleTextStyle">@style/MyActionBarTitleStyle</item>

      </style>

      <!--ActionBar tab text-->
      <style name="MyActionBarTabText" parent="@style/Widget.AppCompat.ActionBar.TabText">
          <item name="android:textColor">@color/actionbar_text</item>
      </style>

      <!--ActionBar title text-->
      <style name="MyActionBarTitleStyle" parent="TextAppearance.AppCompat.Widget.ActionBar.Title">
          <item name="android:textColor">@color/actionbar_text</item>
      </style>
  </resources>

For Android 2.1 and higher

當(dāng)時(shí)使用Support庫(kù)時(shí),我們的style XML文件應(yīng)該是這樣的:
<?xml version="1.0" encoding="utf-8"?>
<resources>

<style name="CustomActionBarTheme" parent="@style/Theme.AppCompat">
<item name="android:actionBarStyle">@style/MyActionBar</item>
<item name="android:actionBarTabStyle">@style/MyActionBarTabText</item>
<item name="android:actionMenuTextColor">@color/actionbar_text</item>

          <!--Support libray compatibility-->
          <item name="actionBarStyle">@style/MyActionBar</item>
          <item name="actionBarTabTextStyle">@style/MyActionBarTabText</item>
          <item name="actionMenuTextColor">@color/actionbar_text</item>
      </style>

      <!--ActionBar styles-->
      <style name="MyActionBar" parent="@style/Widget.AppCompat.ActionBar">
          <item name="android:titleTextStyle">@style/MyActionBarTitleStyle</item>

          <!--Support library compatibility-->
          <item name="titleTextStyle">@style/MyActionBarTitleStyle</item>
      </style>

      <!--ActionBar tab text-->
      <style name="MyActionBarTabText" parent="@style/Widget.AppCompat.ActionBar.TabText">
          <item name="android:textColor">@color/actionbar_text</item>
      </style>

      <!--ActionBar title text-->
      <style name="MyActionBarTitleStyle" parent="TextAppearance.AppCompat.Widget.ActionBar.Title">
          <item name="android:textColor">@color/actionbar_text</item>
      </style>
  </resources>

Overlaying the Action Bar

默認(rèn)情況下辆苔,action bar顯示在activity窗口的頂部算灸,會(huì)稍微減少其他布局的可用空間。如果在用戶交互的過(guò)程中驻啤,你想要隱藏或顯示action bar可以調(diào)用hide()和show()來(lái)實(shí)現(xiàn)菲驴。然而,這將導(dǎo)致activity會(huì)基于它的新尺寸重新計(jì)算和重新繪制布局骑冗。
為避免在顯示和隱藏action bar時(shí)重新調(diào)整布局大小赊瞬,我們可以在action bar上啟用疊加模式(overlay mode),布局可以使用所有的可用空間贼涩,就好像action bar不存在一樣巧涧,并且系統(tǒng)會(huì)將action bar疊加在布局之上。這樣布局頂部就會(huì)有點(diǎn)被遮擋遥倦,但是現(xiàn)在action bar隱藏或顯示時(shí)谤绳,系統(tǒng)就不需要重新調(diào)整布局的大小而是無(wú)縫過(guò)渡。

Enable Overlay Mode

要為action bar 啟用overlay mode袒哥,我們需要?jiǎng)?chuàng)建一個(gè)自定義主題缩筛,該主題繼承與一個(gè)已存在的action bar 主題,并且把a(bǔ)ndroid:windowActionBarOverlay屬性設(shè)置為true统诺。

For Android 3.0 and higher only

如果minSDKVersion設(shè)為11或更高版本歪脏,我們的自定義主題應(yīng)該使用Theme.Holo 主題(或者它的一個(gè)子主題)作為父主題。比如:

  <resources>
      <!--the theme applied to the application or activity-->
      <style name="CustomActionBarTheme" parent="@style/Theme.Holo">
          <item name="android:windowActionBarOverlay">true</item>
      </style>
  </resources>

For Android 2.1 and higher

如果你的app為了兼容運(yùn)行在Android 3.0之下的設(shè)備而使用了Support庫(kù)粮呢,你的自定義主題應(yīng)該使用Theme.AppCompat主題(或它的一個(gè)子主題)作為父主題。比如:

  <resources>
      <!--the theme applied to the application or activity-->
      <style name="CustomActionBarTheme" parent="@style/Theme.AppCompat">
          <item name="android:windowActionBarOverlay">true</item>
       
          <!--Support library compatibility-->
          <item name="windowActionBarOverlay">true</item>
      </style>
  </resources>

注意,這個(gè)主題包括兩種不同的windowActionBarOverlay樣式定義:一個(gè)帶有android:前綴啄寡,一個(gè)沒(méi)有豪硅。帶有android:前綴的適用于包括該樣式的Android系統(tǒng)版本,不帶前綴的適用于從Support讀取樣式的舊版本挺物。

Specify Layout Top-margin

當(dāng)action bar啟用了overlay mode懒浮,可能會(huì)遮擋某些本應(yīng)該可見(jiàn)的布局。為了確保這些布局始終處于action bar的下面识藤,可以通過(guò)使用actionBarSize來(lái)指定頂部margin或padding的高度來(lái)實(shí)現(xiàn)砚著。比如:

  <LinearLayout 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"
      android:paddingTop="?android:attr/actionBarSize">
  </LinearLayout>

如果你在action bar中使用了Support庫(kù),你需要?jiǎng)h除android:前綴痴昧。比如:

  <LinearLayout 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"
      android:paddingTop="?android:attr/actionBarSize">
  </LinearLayout>

在這種情況下稽穆,不帶前綴的?attr/actionBarSize適用于包括Android3.0和更高版本的所有版本。

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末赶撰,一起剝皮案震驚了整個(gè)濱河市舌镶,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌豪娜,老刑警劉巖餐胀,帶你破解...
    沈念sama閱讀 217,084評(píng)論 6 503
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場(chǎng)離奇詭異瘤载,居然都是意外死亡否灾,警方通過(guò)查閱死者的電腦和手機(jī),發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 92,623評(píng)論 3 392
  • 文/潘曉璐 我一進(jìn)店門(mén)鸣奔,熙熙樓的掌柜王于貴愁眉苦臉地迎上來(lái)柒莉,“玉大人,你說(shuō)我怎么就攤上這事蜂大≡” “怎么了?”我有些...
    開(kāi)封第一講書(shū)人閱讀 163,450評(píng)論 0 353
  • 文/不壞的土叔 我叫張陵伟叛,是天一觀的道長(zhǎng)私痹。 經(jīng)常有香客問(wèn)我,道長(zhǎng)统刮,這世上最難降的妖魔是什么紊遵? 我笑而不...
    開(kāi)封第一講書(shū)人閱讀 58,322評(píng)論 1 293
  • 正文 為了忘掉前任,我火速辦了婚禮侥蒙,結(jié)果婚禮上暗膜,老公的妹妹穿的比我還像新娘。我一直安慰自己鞭衩,他們只是感情好学搜,可當(dāng)我...
    茶點(diǎn)故事閱讀 67,370評(píng)論 6 390
  • 文/花漫 我一把揭開(kāi)白布娃善。 她就那樣靜靜地躺著,像睡著了一般瑞佩。 火紅的嫁衣襯著肌膚如雪聚磺。 梳的紋絲不亂的頭發(fā)上,一...
    開(kāi)封第一講書(shū)人閱讀 51,274評(píng)論 1 300
  • 那天炬丸,我揣著相機(jī)與錄音瘫寝,去河邊找鬼。 笑死稠炬,一個(gè)胖子當(dāng)著我的面吹牛焕阿,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播首启,決...
    沈念sama閱讀 40,126評(píng)論 3 418
  • 文/蒼蘭香墨 我猛地睜開(kāi)眼暮屡,長(zhǎng)吁一口氣:“原來(lái)是場(chǎng)噩夢(mèng)啊……” “哼!你這毒婦竟也來(lái)了闽坡?” 一聲冷哼從身側(cè)響起栽惶,我...
    開(kāi)封第一講書(shū)人閱讀 38,980評(píng)論 0 275
  • 序言:老撾萬(wàn)榮一對(duì)情侶失蹤,失蹤者是張志新(化名)和其女友劉穎疾嗅,沒(méi)想到半個(gè)月后外厂,有當(dāng)?shù)厝嗽跇?shù)林里發(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 45,414評(píng)論 1 313
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡代承,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 37,599評(píng)論 3 334
  • 正文 我和宋清朗相戀三年汁蝶,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片论悴。...
    茶點(diǎn)故事閱讀 39,773評(píng)論 1 348
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡掖棉,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出膀估,到底是詐尸還是另有隱情幔亥,我是刑警寧澤,帶...
    沈念sama閱讀 35,470評(píng)論 5 344
  • 正文 年R本政府宣布察纯,位于F島的核電站帕棉,受9級(jí)特大地震影響,放射性物質(zhì)發(fā)生泄漏饼记。R本人自食惡果不足惜香伴,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,080評(píng)論 3 327
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望具则。 院中可真熱鬧即纲,春花似錦、人聲如沸博肋。這莊子的主人今日做“春日...
    開(kāi)封第一講書(shū)人閱讀 31,713評(píng)論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)。三九已至拔稳,卻和暖如春葛峻,著一層夾襖步出監(jiān)牢的瞬間锹雏,已是汗流浹背巴比。 一陣腳步聲響...
    開(kāi)封第一講書(shū)人閱讀 32,852評(píng)論 1 269
  • 我被黑心中介騙來(lái)泰國(guó)打工, 沒(méi)想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留礁遵,地道東北人轻绞。 一個(gè)月前我還...
    沈念sama閱讀 47,865評(píng)論 2 370
  • 正文 我出身青樓,卻偏偏與公主長(zhǎng)得像佣耐,于是被迫代替她去往敵國(guó)和親政勃。 傳聞我的和親對(duì)象是個(gè)殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 44,689評(píng)論 2 354

推薦閱讀更多精彩內(nèi)容