Android 自訂標題列(title欄)

來源:互聯網
上載者:User

近日

需要在android的標題列上添加按鈕,所以對android的標題列進行了一下簡單的研究~


第一步,向實現自訂標題列,需要在onCreate方法裡這樣寫


        requestWindowFeature(Window.FEATURE_CUSTOM_TITLE);                setContentView(R.layout.main);        getWindow().setFeatureInt(Window.FEATURE_CUSTOM_TITLE, R.layout.title_bar); 

注意:

requestWindowFeature要在setContentView之前

getWindow().setFeatureInit最好在setContentView之後


第二步,就是寫好自己的布局檔案,實現標題列的自訂。

不過我們會遇到一些問題,就是標題列的高度不能自訂~下面就是解決辦法~

下面,我們看一下android title標題列 在源碼 framework中的XML檔案

screen_custom_title.xml

<LinearLayout android:orientation="vertical" android:fitsSystemWindows="true"><FrameLayout android:id="@android:id/title_container"              android:layout_width="match_parent"              android:layout_height="?android:attr/windowTitleSize"              style="?android:attr/windowTitleBackgroundStyle">    </FrameLayout><FrameLayout android:id="@android:id/content"              android:layout_width="match_parent"              android:layout_height="0dip"              android:layout_weight="1"              android:foregroundGravity="fill_horizontal|top"              android:foreground="?android:attr/windowContentOverlay"/></LinearLayout>

screen_title.xml

<LinearLayout android:orientation="vertical" android:fitsSystemWindows="true">−<FrameLayout android:layout_width="match_parent"              android:layout_height="?android:attr/windowTitleSize"              style="?android:attr/windowTitleBackgroundStyle"><TextView android:id="@android:id/title"           style="?android:attr/windowTitleStyle"           android:background="@null"           android:fadingEdge="horizontal"           android:gravity="center_vertical"           android:layout_width="match_parent"           android:layout_height="match_parent"/></FrameLayout><FrameLayout android:id="@android:id/content"              android:layout_width="match_parent"              android:layout_height="0dip"              android:layout_weight="1"              android:foregroundGravity="fill_horizontal|top"              android:foreground="?android:attr/windowContentOverlay"/></LinearLayout>


       既然是自訂標題,那我們就看screen_custom_title.xml,裡面有一個title_container和一個content,組合成了標題列,我們自訂標題所給出的view,都被content作為子view了,影響不了那個title_container和content,所以,任你怎麼弄,它該留白的還是留白,你沒招。
       看title_container有個style是這樣的:

        style="?android:attr/windowTitleBackgroundStyle"
      

         content的foreground是這樣的android:foreground="?android:attr/windowContentOverlay"

       我們可以自己寫一個style

<resources xmlns:android="http://schemas.android.com/apk/res/android"><style name="CustomWindowTitleBackground">       <item name="android:background">#00cc00</item></style><style name="test" parent="android:Theme">     <item name="android:windowTitleSize">50dp</item>     <item name="android:windowTitleBackgroundStyle">@style/CustomWindowTitleBackground</item></style></resources>

加入到AndroidManifest

        <activity android:name=".CustomTitileBarActivity"                  android:label="@string/app_name" android:theme="@style/title_bar">            <intent-filter>                <action android:name="android.intent.action.MAIN" />                <category android:name="android.intent.category.LAUNCHER" />            </intent-filter>        </activity>

PS:做的略顯粗糙,不過以能實現功能為主~~

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.