Android中自定义标题栏的实现(总结)

在开发过程中,一个APP中的各个界面的标题栏一般都是一样的,有的还带有功能按钮。那么,如果每一个界面我们都把标题栏的布局写一遍,是不是感觉有点繁琐,怎么办呢?

解决方案:自定义标题栏布局。

1、自定义布局Java文件代码如下:

package com.deepreality.corporation_app.CustomViews;

import android.app.Activity;
import android.content.Context;
import android.util.AttributeSet;
import android.view.LayoutInflater;
import android.view.View;
import android.widget.ImageView;
import android.widget.RelativeLayout;
import android.widget.TextView;

import com.deepreality.corporation_app.R;

/**
 * 自定义的标题栏(方便重复使用)
 */
public class RelativeLayoutTitle extends RelativeLayout implements View.OnClickListener {
    private Context mContext;
    public String navigationTitle = "标题栏";

    private ImageView imageView;

    public RelativeLayoutTitle(Context context, AttributeSet attrs) {
        super(context, attrs);
        mContext = context;
        LayoutInflater.from(context).inflate(R.layout.layout_title_withgoback, this);
        imageView = findViewById(R.id.Layout_Title_ivGoBack);
        imageView.setOnClickListener(this);
    }

    @Override
    public void onClick(View v) {
        switch (v.getId()) {
            case R.id.Layout_Title_ivGoBack: {
                ((Activity) mContext).finish();
                break;
            }
            default:break;
        }
    }

    /**
     * 设置标题
     * @param navigationTitle
     */
    public void setNavigationTitle(String navigationTitle) {
        this.navigationTitle = navigationTitle;
        TextView textView = (TextView) findViewById(R.id.Layout_Title_tvTitle);
        textView.setText(navigationTitle);
    }
}

2、相应的布局文件中引用:

<com.deepreality.corporation_app.CustomViews.RelativeLayoutTitle
    android:id="@+id/Activity_Register_rLayoutTitle"
    android:layout_width="match_parent"
    android:layout_height="50dp"></com.deepreality.corporation_app.CustomViews.RelativeLayoutTitle>

3、在Activity中实现对标题TextView的赋值

relativeLayoutTitle.setNavigationTitle("用户注册");

PS:不管是一个ImageView和TextView,你可以加自己相要的View。比如,Button之类的都可以。

猜你喜欢

转载自blog.csdn.net/lpCrazyBoy/article/details/81563036