zoukankan      html  css  js  c++  java
  • Android开发如何在4.0及以上系统中自定义TitleBar

    本文将通过一个实例讲解怎么实现在4.0及以上系统版本中实现自定义TitleBar,这只是我自己找到的一种方法;

    xml布局文件

    activity_main.xml

    1. <RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
    2. xmlns:tools="http://schemas.android.com/tools"
    3. android:layout_width="match_parent"
    4. android:layout_height="match_parent"
    5. android:paddingBottom="@dimen/activity_vertical_margin"
    6. android:paddingLeft="@dimen/activity_horizontal_margin"
    7. android:paddingRight="@dimen/activity_horizontal_margin"
    8. android:paddingTop="@dimen/activity_vertical_margin"
    9. tools:context=".MainActivity" >
    10. <TextView
    11. android:layout_width="wrap_content"
    12. android:layout_height="wrap_content"
    13. android:text="@string/hello_world" />
    14. </RelativeLayout>

    自定义的Titlebar的布局文件titlebar.xml

    1. <?xml version="1.0" encoding="utf-8"?>
    2. <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    3. android:layout_width="match_parent"
    4. android:layout_height="48dp"
    5. android:orientation="horizontal" >
    6. <ImageView
    7. android:layout_width="wrap_content"
    8. android:layout_height="wrap_content"
    9. android:layout_gravity="center"
    10. android:layout_weight="1.5"
    11. android:src="@drawable/ic_action_search" />
    12. <TextView
    13. android:layout_width="wrap_content"
    14. android:layout_height="48dp"
    15. android:layout_weight="1.5"
    16. android:paddingTop="1dp"
    17. android:text="@string/app_name"
    18. android:textSize="14sp" />
    19. <EditText
    20. android:id="@+id/searchparameter"
    21. android:layout_width="wrap_content"
    22. android:layout_height="48dp"
    23. android:layout_margin="1dp"
    24. android:layout_weight="5"
    25. android:text="ABCDEFGHIJ"
    26. android:textSize="14sp" />
    27. <Button
    28. android:id="@+id/button"
    29. android:layout_width="wrap_content"
    30. android:layout_height="48dp"
    31. android:layout_margin="1dp"
    32. android:layout_weight="2"
    33. android:text="OK"
    34. android:textSize="14sp" />
    35. </LinearLayout>

    为布局文件修改style.xml

    此处的style.xml在values-11或者value-14中,否侧会报错:you cannot combine custom titles with other title features

    1. <?xml version="1.0" encoding="utf-8"?>
    2. <resources xmlns:android="http://schemas.android.com/apk/res/android">
    3. <style name="CustomizedWindowTitleBackground">
    4. <item name="android:background">#047BF0</item>
    5. </style>
    6. <style name="titlebarstyle" parent="android:Theme">
    7. <item name="android:windowTitleSize">48dp</item>
    8. <item name="android:windowTitleBackgroundStyle">@style/CustomizedWindowTitleBackground</item>
    9. <!-- All customizations that are NOT specific to a particular API-level can go here. -->
    10. </style>
    11. </resources>

    在AndroidManifest.xml添加主题样式

    android:theme="@style/titlebarstyle"

    1. <?xml version="1.0" encoding="utf-8"?>
    2. <manifest xmlns:android="http://schemas.android.com/apk/res/android"
    3. package="com.example.titlebardemo"
    4. android:versionCode="1"
    5. android:versionName="1.0" >
    6. <uses-sdk
    7. android:minSdkVersion="8"
    8. android:targetSdkVersion="17" />
    9. <application
    10. android:allowBackup="true"
    11. android:icon="@drawable/ic_launcher"
    12. android:label="@string/app_name" >
    13. <activity
    14. android:name="com.example.titlebardemo.MainActivity"
    15. android:label="@string/app_name"
    16. android:theme="@style/titlebarstyle" >
    17. <intent-filter>
    18. <action android:name="android.intent.action.MAIN" />
    19. <category android:name="android.intent.category.LAUNCHER" />
    20. </intent-filter>
    21. </activity>
    22. </application>
    23. </manifest>

    MainActivity.java中添加实现代码

    1. protected void onCreate(Bundle savedInstanceState) {
    2. super.onCreate(savedInstanceState);
    3. requestWindowFeature(Window.FEATURE_CUSTOM_TITLE);
    4. setContentView(R.layout.activity_main);
    5. getWindow().setFeatureInt(Window.FEATURE_CUSTOM_TITLE,
    6. R.layout.titlebar);
    7. }

    代码中requestWindowFeature(Window.FEATURECUSTOMTITLE);和getWindow().setFeatureInt(Window.FEATURECUSTOMTITLE, R.layout.titlebar);位置是固定的.

    希望读者朋友们通过这个例子能够对怎么实现在4.0及以上系统版本中自定义TitleBar有深刻理解和掌握。

  • 相关阅读:
    Socket实现Web应用的本质
    板凳要坐十年冷 代码不写一句空
    Python写的刷QB钓鱼盗号软件
    除法细节_Python小知识点00005
    标识符,变量的命名_Python小知识00003
    类和ID选择器的区别
    十分钟搞定CSS选择器
    HTML引入CSS样式三种方法及优先级
    CSS代码语法
    html form <label>标签基础语法结构与使用案例教程
  • 原文地址:https://www.cnblogs.com/lvlv/p/3893625.html
Copyright © 2011-2022 走看看