安卓自定义简单的Title标题栏(仿iPhone样式)

来源:互联网 发布:二级域名 不同端口 编辑:程序博客网 时间:2024/06/10 06:51

1:新建一个title线性布局(只涉及到一个方向的排列,建议使用线性布局),水平排列

2:添加Button控件,TextView控件,Button控件

<?xml version="1.0" encoding="utf-8"?><LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"    android:layout_width="match_parent"    android:layout_height="wrap_content"    >    <Button        android:id="@+id/button_back"        android:layout_width="wrap_content"        android:layout_height="wrap_content"        android:background="@drawable/back"        />    <TextView        android:layout_weight="1"        android:layout_width="0dp"        android:layout_height="wrap_content"        android:gravity="center"        android:layout_gravity="center"        android:text="主界面"        android:textSize="30sp"        />    <Button        android:id="@+id/button_go"        android:layout_width="wrap_content"        android:layout_height="wrap_content"        android:background="@drawable/go"        /></LinearLayout>

效果如下图(按自己的喜好排列,添加背景等)


然后新建一个类,继承自LinearLayout,在这个类里面定义这个控件的功能(比如那两个按钮的功能,因为经常要用到这个标题栏,避免重复代码也为了后期可以方便的修改)

package com.example.zhanglikun.titlelayout;import android.content.Context;import android.util.AttributeSet;import android.view.LayoutInflater;import android.view.View;import android.widget.Button;import android.widget.LinearLayout;import android.widget.Toast;/** * Created by zhanglikun on 2017/5/3. */public class Title extends LinearLayout implements View.OnClickListener{    public Title(Context context, AttributeSet attributeSet) {        super(context,attributeSet);        LayoutInflater.from(context).inflate(R.layout.title,this);        Button buttonback = (Button)findViewById(R.id.button_back);        Button buttongo = (Button)findViewById(R.id.button_go);        buttonback.setOnClickListener(this);        buttongo.setOnClickListener(this);    }    @Override    public void onClick(View v) {        switch(v.getId()){            case R.id.button_back:                Toast.makeText(getContext(),"back",Toast.LENGTH_SHORT).show();                break;            case R.id.button_go:                Toast.makeText(getContext(),"go",Toast.LENGTH_SHORT).show();                break;        }    }}

到此这个控件就新建好了,名字叫Title,因为不在安卓sdk里面,所以引用的时候我们要使用全名.

在需要引用这个控件的layout文件中

<?xml version="1.0" encoding="utf-8"?><LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"    android:orientation="vertical" android:layout_width="match_parent"    android:layout_height="match_parent">        <com.example.zhanglikun.titlelayout.Title        android:layout_width="match_parent"        android:layout_height="wrap_content"        />    </LinearLayout>

最后一步:在MainActivity里隐藏系统原生的标题栏.

package com.example.zhanglikun.titlelayout;import android.support.v7.app.ActionBar;import android.support.v7.app.AppCompatActivity;import android.os.Bundle;public class Activity1 extends AppCompatActivity {    @Override    protected void onCreate(Bundle savedInstanceState) {        super.onCreate(savedInstanceState);        setContentView(R.layout.activity1);        ActionBar actionBar = getSupportActionBar();        if (actionBar != null)            actionBar.hide();    }}

效果如下图所示,点击按钮会有个Toast提醒



1 0