• android SDK开发 -- TitleBar封装(一)


    假设app的title 统一的都是这种左中右结构的 代码如下

     1 <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"  
     2     style="@style/app_title_style"  
     3     android:baselineAligned="false"  
     4     android:gravity="center_vertical"  
     5     android:orientation="horizontal">  
     6     <ViewSwitcher  
     7         android:id="@+id/app_title_left_switcher"  
     8         android:layout_width="wrap_content"  
     9         android:layout_height="wrap_content">  
    10         <TextView  
    11             android:id="@+id/app_title_left_text"  
    12             android:layout_width="wrap_content"  
    13             android:layout_height="wrap_content"  
    14             android:text="返回"/>  
    15         <ImageView  
    16             android:id="@+id/app_title_left_image"  
    17             android:layout_width="wrap_content"  
    18             android:layout_height="wrap_content"/>  
    19     </ViewSwitcher>  
    20     <ViewSwitcher  
    21         android:id="@+id/app_title_middle_switcher"  
    22         android:layout_width="0dip"  
    23         android:layout_height="wrap_content"  
    24         android:layout_marginLeft="16dip"  
    25         android:layout_weight="1">  
    26         <TextView  
    27             android:id="@+id/app_title_middle_text"  
    28             android:layout_width="wrap_content"  
    29             android:layout_height="wrap_content"  
    30             android:layout_gravity="center"  
    31             android:text="title"/>  
    32         <ImageView  
    33             android:id="@+id/app_title_middle_image"  
    34             android:layout_width="wrap_content"  
    35             android:layout_height="wrap_content"  
    36             android:layout_gravity="center"/>  
    37     </ViewSwitcher>  
    38     <ViewSwitcher  
    39         android:id="@+id/app_title_right_switcher"  
    40         android:layout_width="wrap_content"  
    41         android:layout_height="wrap_content">  
    42         <TextView  
    43             android:id="@+id/app_title_right_text"  
    44             android:layout_width="wrap_content"  
    45             android:layout_height="wrap_content"  
    46             android:text="下一步"/>  
    47         <ImageView  
    48             android:id="@+id/app_title_right_image"  
    49             android:layout_width="wrap_content"  
    50             android:layout_height="wrap_content"/>  
    51     </ViewSwitcher>  
    52 </LinearLayout>  

    先来继续完善一下BaseActivity

     1 protected void onCreate(BundlesavedInstanceState){  
     2          super.onCreate(savedInstanceState);  
     3          ActivityMgr.push(this);  
     4    
     5          findViewById();  
     6 }  
     7    
     8 // 初始化app中通用的控件  
     9 protected void findViewById(){  
    10           
    11 }  
    12 //  设置标题栏  
    13 protected void setTitle(){  
    14    
    15 }  

    然后看一下BaseActivity的具体实现类TitleDemoActivity

     1 public class TitleDemoActivity extendsBaseActivity{  
     2           
     3          protectedvoid onCreate(Bundle savedInstanceState){  
     4                    super.onCreate(savedInstanceState);  
     5          }  
     6    
     7          protectedvoid findViewById(){  
     8                    setContentView(R.layout.title_demo);  
     9                    super.findViewById();  
    10                    super.setTitle();// 设置标题栏  
    11          }  
    12 }  

    TitleBar封装

    BaseActivity的设计初衷是所有的Activity的都继承该类。

    首先定义一些通用的属性、以及方法

     1 private ViewSwitcher mLeftSwitcher;  
     2 private ViewSwitcher mMiddleSwitcher;  
     3 private ViewSwitcher mRightSwitcher;  
     4 /** * 初始化View */  
     5 protected void findViewById() {  
     6   mLeftSwitcher = (ViewSwitcher) findViewById(R.id.app_title_left_switcher);  
     7   mMiddleSwitcher = (ViewSwitcher) findViewById(R.id.app_title_middle_switcher);  
     8   mRightSwitcher = (ViewSwitcher) findViewById(R.id.app_title_right_switcher);  
     9 }  
    10 protected void setTitle(String left, String middle, String right) {  
    11   ((TextView) mLeftSwitcher.getChildAt(0)).setText(left);  
    12   ((TextView) mMiddleSwitcher.getChildAt(0)).setText(middle);  
    13   ((TextView) mRightSwitcher.getChildAt(0)).setText(right);  
    14 }  

    子类调用

     1 public class TitleDemoActivity extends BaseActivity {  
     2   
     3     @Override  
     4     protected void onCreate(Bundle savedInstanceState) {  
     5         super.onCreate(savedInstanceState);  
     6   
     7     }  
     8   
     9     @Override  
    10     protected void findViewById() {  
    11         setContentView(R.layout.title_demo);  
    12         super.findViewById();  
    13   
    14         setTitle("返回主页", "这是一个Title", "下一个界面");  
    15     }  
    16   
    17 }  
  • 相关阅读:
    GOF23设计模式汇总
    获取表单提交MVC错误信息
    Spring.Net
    简单工厂、工厂方法和抽象工厂
    Json和JsonP
    mysql8无法用navicat连接(mysql8加密方式的坑)
    (4.16)mysql备份还原——物理备份之XtraBackup实践
    mysql如何下载历史版本?
    如何测试端口通不通(四种方法)
    linux移动复制删除命令
  • 原文地址:https://www.cnblogs.com/Sharley/p/5695779.html
Copyright © 2020-2023  润新知