• Android自定义实现微信标题栏


    Android自定义实现微信标题栏

        前言:在android的开发中有时我们需要更个性化的标题栏,而不仅仅是系统预定义的图标加软件名,同时有时候我们需要在标题栏中实现更多功能,如添加按钮响应用户点击。这就要求我们实现自定义标题栏。下面以微信的标题栏为例:

    微信界面的标题栏:

       step 1:写标题栏布局文件

        新建一个布局文件titleBar.xml文件:

     1 <?xml version="1.0" encoding="utf-8"?>
     2 <RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
     3     android:layout_width="match_parent"
     4     android:layout_height="match_parent"
     5     android:background="#434343"
     6     >
     7     
     8     <TextView
     9         android:id="@+id/barText"
    10         android:layout_alignParentLeft="true"
    11         android:layout_width="wrap_content"
    12         android:layout_height="wrap_content"
    13         android:textColor="#FFFFFF"
    14         android:layout_centerVertical="true"
    15         
    16         android:textSize="20sp"
    17         android:layout_marginLeft="5dp"
    18         android:text="微信(4)"
    19         />
    20 
    21     <ImageView
    22         android:id="@+id/barAdd"
    23         android:layout_width="wrap_content"
    24         android:layout_height="wrap_content"
    25         android:src="@android:drawable/ic_menu_add"
    26         android:layout_alignParentRight="true"
    27         android:layout_marginRight="10dp"
    28         android:layout_centerVertical="true"
    29         />
    30     
    31      <ImageView
    32         android:id="@+id/barSearch"
    33         android:layout_width="wrap_content"
    34         android:layout_height="wrap_content"
    35         android:src="@android:drawable/ic_menu_search"
    36         android:layout_toLeftOf="@+id/barAdd"
    37         android:layout_marginRight="20dp"
    38         android:layout_centerVertical="true"
    39         />
    40 </RelativeLayout>

      step2:在源文件OnCreat中添加:设置titleBar.xml为标题栏布局

    1     public void onCreate(Bundle savedInstanceState) {
    2         super.onCreate(savedInstanceState);
    3         requestWindowFeature(Window.FEATURE_CUSTOM_TITLE);
    4         setContentView(R.layout.main);
    5         //设置标题布局为titlebar
    6         getWindow().setFeatureInt(Window.FEATURE_CUSTOM_TITLE, R.layout.titlebar);
    7 }

    step3:定义标题栏的风格

    在drawable新建color.xml:

    1 <?xml version="1.0" encoding="utf-8"?>
    2 <color xmlns:android="http://schemas.android.com/apk/res/android" >
    3            <item name="android:color">#434343</item>  //设置背景色
    4 </color>

    在values新建titleStyle.xml:

    1 <?xml version="1.0" encoding="utf-8"?>
    2 <resources>
    3     <style name="MyStyle" parent="android:Theme.Light">
    4           <item name="android:windowTitleSize">50dp</item>//设置宽度
    5           <item name="android:windowTitleBackgroundStyle">@drawable/color</item> //设置背景风格,否则可能有边框
    6     </style>
    7 </resources>

    在AndroidManifest.xml中修改配置:

    在application中添加:android:theme="@style/titleStyle"

    step4:添加点击处理:

    在修改源文件为:

     1 public class WeixinActivity extends Activity implements OnClickListener{
     2     /** Called when the activity is first created. */
     3     public ImageView addBtn;
     4     public ImageView searchBtn;
     5     
     6     @Override
     7     public void onCreate(Bundle savedInstanceState) {
     8         super.onCreate(savedInstanceState);
     9         requestWindowFeature(Window.FEATURE_CUSTOM_TITLE);
    10         setContentView(R.layout.main);
    11         //设置标题布局为titlebar
    12         getWindow().setFeatureInt(Window.FEATURE_CUSTOM_TITLE, R.layout.titlebar);
    13         
    14         addBtn=(ImageView)this.findViewById(R.id.barAdd);
    15         searchBtn=(ImageView)this.findViewById(R.id.barSearch);
    16         
    17         addBtn.setOnClickListener(this);
    18         searchBtn.setOnClickListener(this);
    19 
    20     }
    21 
    22     @Override
    23     public void onClick(View v) {
    24         // TODO Auto-generated method stub
    25         switch(v.getId()){
    26         case R.id.barAdd:Toast.makeText(WeixinActivity.this, "你点击了添加", Toast.LENGTH_SHORT).show();break;
    27         case R.id.barSearch:Toast.makeText(WeixinActivity.this, "你点击了搜索", Toast.LENGTH_SHORT).show();break;
    28         default:break;
    29         }
    30     }
    31 }

    step5:运行

     

     ok

    这样就完成了,图片我用的系统的图片,不太美观,大家可以自己修改

  • 相关阅读:
    sweep line 扫描线模型
    双指针&整数二分思路总结
    ELF文件格式
    flask-migrate数据库迁移出现sqlalchemy.exc.OperationalError: (_mysql_exceptions.OperationalError) (2059, <NULL>)
    腾讯面试题
    zabbix 调用飞书发送消息
    NFS服务部署
    Linux系统启动
    电商系统nuxt的布局目录代码分享
    电商系统中进行流量控制
  • 原文地址:https://www.cnblogs.com/cxyc/p/5377873.html
Copyright © 2020-2023  润新知