效果图如下:1.定制activity_actionbar.xml文件(图)

一般项目中经常会用到这样的导航栏,中间显示文字,左右显示图标,今天就来把代码理一理导航样式的自定义,实现这个功能。以后直接拿来用就好了。

它的好处是,中间的标题和左右两边的图标在不同的Activity中可以完全实现定制,十分灵活。

效果图如下:

图片[1]-效果图如下:1.定制activity_actionbar.xml文件(图)-唐朝资源网

1.定制activity_actionbar.xml文件



    
    
    
    

如果遇到显示不正常导航样式的自定义,可以修改ImageButton的background属性.

2.在activity_main.xml中引入该导航栏布局。



    

3.在MainActivity中初始化该导航栏

package com.example.actionbardemo;
import android.os.Bundle;
import android.support.v7.app.AppCompatActivity;
import android.view.View;
import android.view.Window;
import android.widget.ImageView;
import com.example.actionbardemo.util.AndroidUtil;
/**
 * 顶部导航栏demo
 */
public class MainActivity extends AppCompatActivity implements View.OnClickListener {
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        requestWindowFeature(Window.FEATURE_NO_TITLE);
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        ImageView leftBtn = (ImageView) findViewById(R.id.left_imbt);
        ImageView rightBtn = (ImageView) findViewById(R.id.right_imbt);
        //设置标题以及左右按钮的图片资源
        AndroidUtil.setWindowTitle(this, getString(R.string.app_name));
        AndroidUtil.setImageViewSource(this, R.id.left_imbt, R.drawable.actionbar_back);
        AndroidUtil.setImageViewSource(this, R.id.right_imbt, R.drawable.actionbar_add);
        if (leftBtn != null) {
            leftBtn.setOnClickListener(this);
        }
        if (rightBtn != null) {
            rightBtn.setOnClickListener(this);
        }
    }
    @Override
    public void onClick(View v) {
        AndroidUtil.onShowToast(this, "click");
    }
}

其中以上代码中用到的AndroidUtil工具类中的方法代码如下:

package com.mytest;
import android.app.Activity;
import android.view.View;
import android.widget.ImageView;
import android.widget.TextView;
import com.qhcloud.filetransfer.R;
/**
 * Function:工具类
 * Created by XZY on 2017/6/11 17:49
 * Email:hgncxzy@qq.com
 */
public class AndroidUtil {
    /**
     * 设置标题文字
     *
     * @param activity
     * @param text
     */
    public static void setWindowTitle(Activity activity, String text) {
        setTextViewText(activity, R.id.actionbar_title, text, true);
    }
    /**
     * 设置TEXTVIEW内容
     *
     * @param activity
     * @param resId    控件id
     * @param text
     * @param isShow
     */
    public static void setTextViewText(Activity activity, int resId,
                                       String text, boolean isShow) {
        TextView textView = (TextView) activity.findViewById(resId);
        if (textView != null) {
            textView.setText(text);
            textView.setVisibility(isShow ? View.VISIBLE : View.GONE);
        }
    }
    /**
     * 设置IMAGEVIEW图片
     *
     * @param activity
     * @param resId    控件id
     * @param imageId  图片id
     */
    public static void setImageViewSource(Activity activity, int resId,
                                          int imageId) {
        ImageView imageView = (ImageView) activity.findViewById(resId);
        if (imageView != null) {
            imageView.setImageResource(imageId);
            imageView.setVisibility(View.VISIBLE);
        }
    }
}

大功告成。其中涉及到一些资源文件的使用,请下载demo查看。

源码地址: 访问密码 0f07

© 版权声明
THE END
喜欢就支持一下吧
点赞178 分享
评论 抢沙发
头像
欢迎您留下宝贵的见解!
提交
头像

昵称

取消
昵称表情代码图片