zoukankan      html  css  js  c++  java
  • (转)Android开发之封装标题栏

    文章转自 CoderAbsolom  的 http://blog.csdn.net/qq_14923661/article/details/52003447

    写在前面:

                标题栏这个部分,绝大多数App都有,起到一个概括本页面功能的作用,有些标题栏还具有返回上一页等额外功能。

                在这里不得不表扬一下苹果的标题栏位设计,简洁美观实用,很有借鉴性

                

                一、项目结构

                

               主要由一个布局文件activity_title.xml和一个构造类TitleBuilder.java组成,布局文件定义标题栏样式,构造类负责设定文字内容,是否显示返回按钮等等。   

     二、代码设计    

               activity_title.xml 由一个绝对布局包裹两个图片控件和一个文本框控件组成

               此处使用线性布局嵌套绝对布局,使内容可以更好地居中显示

    <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"  
        android:background="#1B77A8"  
        android:gravity="center_vertical"  
        android:layout_width="match_parent"  
        android:layout_height="50dp">  
        <RelativeLayout  
            android:id="@+id/title_bar"  
            android:paddingLeft="5dp"  
            android:paddingRight="5dp"  
            android:layout_width="match_parent"  
            android:layout_height="wrap_content">  
            <ImageView  
                android:layout_centerVertical="true"  
                android:visibility="gone"  
                android:id="@+id/title_leftIco"  
                android:layout_width="wrap_content"  
                android:layout_height="wrap_content" />  
            <TextView  
                android:id="@+id/title_text"  
                android:textSize="20sp"  
                android:textColor="#ffffff"  
                android:layout_centerInParent="true"  
                android:layout_width="wrap_content"  
                android:layout_height="wrap_content" />  
            <ImageView  
                android:visibility="gone"  
                android:id="@+id/title_rightIco"  
                android:layout_alignParentRight="true"  
                android:layout_width="wrap_content"  
                android:layout_height="wrap_content" />  
        </RelativeLayout>  
    </LinearLayout>  

    TitleBuilder.java 

        /** 
         * Created by PanZhe on 2016/7/22. 
         */  
        public class TitleBuilder {  
            private View titleView;  
            private RelativeLayout titleBar;  
            private TextView text;  
            private ImageView leftIco;  
            private ImageView rightIco;  
          
            /** 
             * 构造方法:用于获取对象 
             * */  
            public TitleBuilder(Activity context){  
                titleView = context.findViewById(R.id.title_bar);  
                text = (TextView)titleView.findViewById(R.id.title_text);  
                titleBar = (RelativeLayout)titleView.findViewById(R.id.title_bar);  
                leftIco = (ImageView)titleView.findViewById(R.id.title_leftIco);  
                rightIco = (ImageView)titleView.findViewById(R.id.title_rightIco);  
            }  
          
            /** 
             * 用于设置标题栏文字 
             * */  
            public TitleBuilder setTitleText(String titleText){  
                if(!TextUtils.isEmpty(titleText)){  
                    text.setText(titleText);  
                }  
                return this;  
            }  
          
            /** 
             * 用于设置标题栏左边要显示的图片 
             * */  
            public TitleBuilder setLeftIco(int resId){  
                leftIco.setVisibility(resId > 0 ? View.VISIBLE : View.GONE);  
                leftIco.setImageResource(resId);  
                return this;  
            }  
          
            /** 
             * 用于设置标题栏右边要显示的图片 
             * */  
            public TitleBuilder setRightIco(int resId){  
                rightIco.setVisibility(resId > 0 ? View.VISIBLE : View.GONE);  
                rightIco.setImageResource(resId);  
                return this;  
            }  
          
            /** 
             * 用于设置标题栏左边图片的单击事件 
             * */  
            public TitleBuilder setLeftIcoListening(View.OnClickListener listener){  
                if(leftIco.getVisibility() == View.VISIBLE){  
                    leftIco.setOnClickListener(listener);  
                }  
                return this;  
            }  
          
            /** 
             * 用于设置标题栏右边图片的单击事件 
             * */  
            public TitleBuilder setRightIcoListening(View.OnClickListener listener){  
                if(rightIco.getVisibility() == View.VISIBLE){  
                    rightIco.setOnClickListener(listener);  
                }  
                return this;  
            }  
        }  

     三、使用方法

       在需要的地方引入

        <include layout="@layout/activity_title"/>  

     在java代码中使用new方法循环设置参数

        public class MainActivity extends AppCompatActivity {  
          
            @Override  
            protected void onCreate(Bundle savedInstanceState) {  
                super.onCreate(savedInstanceState);  
                setContentView(R.layout.activity_main);  
          
                new TitleBuilder(this).setTitleText("测试标题").setLeftIco(R.drawable.left).setLeftIcoListening(leftReturnListener);  
            }  
          
            private View.OnClickListener leftReturnListener = new View.OnClickListener() {  
                @Override  
                public void onClick(View view) {  
                    finish();  
                }  
            };  
        }  

     四、效果图


    中规中矩,对不对?

    大家可以通过修改TitleBuild构造类中的方法来实现自己满意的效果,在这里就不一一列举了

     

  • 相关阅读:
    关于BehaviorEditorPart 不显示的问题(出自msdn)
    webpart msdn 的位置
    Visual Studio 2008 具有一些新的报表功能和改进之处
    .NET Framework 类库
    Reporting Service 安装 及相关问题如:授予的权限不足解决办法
    单服务器部署&&双服务器部署
    Windows Server 2003安装完毕后汉字都为乱码“方框”,配置域控制器
    Dreamweaver MX显示汉字为乱码的解决方法
    名称以无效字符开头。处理资源 'http://localhost/发布了的/Default.aspx' 时出错。第 1 行,位置: 2
    【随感】my feeling about Long Ying
  • 原文地址:https://www.cnblogs.com/1925yiyi/p/7488415.html
Copyright © 2011-2022 走看看