注册 登录  
 加关注
   显示下一条  |  关闭
温馨提示!由于新浪微博认证机制调整,您的新浪微博帐号绑定已过期,请重新绑定!立即重新绑定新浪微博》  |  关闭

罔少年

QQ 332256483

 
 
 

日志

 
 

android 自定义 导航栏(一)  

2015-06-24 14:24:55|  分类: android |  标签: |举报 |字号 订阅

  下载LOFTER 我的照片书  |
很简单的一个功能,贵在封装的一个思路

 android 自定义 导航栏 - 我是小黄人 - lanaiver6291的博客
 

导航栏包括:

  • 返回按钮
  • 标题
  • 右侧按钮(功能不确定)


布局文件:
<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout
xmlns:android="http://schemas.android.com/apk/res/android"
android:id="@+id/rl_chat_title"
android:layout_width="match_parent"
android:layout_height="50dp"
android:background="@drawable/land_navigation"
android:layout_alignParentTop="true">

<ImageView
android:id="@+id/iv_nav_back"
android:layout_width="50dp"
android:layout_height="50dp"
android:padding="13dp"
android:layout_alignParentLeft="true"
android:layout_centerVertical="true"
android:src="@drawable/icon_back"/>


<TextView
android:id="@+id/tv_nav_title"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:gravity="center_vertical"
android:layout_centerHorizontal="true"
android:layout_centerVertical="true"
android:text="@string/app_name"/>


<ImageView
android:id="@+id/iv_nav_right"
android:layout_width="50dp"
android:layout_height="50dp"
android:padding="13dp"
android:layout_alignParentRight="true"
android:layout_centerVertical="true"
android:src="@drawable/icon_setting1"/>

</RelativeLayout>

然后自定义类NavigationView继承RelativeLayout并实现OnClickListener接口.

/**
* 导航栏组件,目前包括返回键,标题,右侧按钮.其中:
* </br>返回键已经实现按键监听
* </br>右侧按钮已实现按键监听
* </br>标题默认不可点击
* @author Asia
*
*/

public class NavigationView extends RelativeLayout implements OnClickListener{

public NavigationView(Context context){
this(context, null);
}

private ImageView backView;
private TextView titleView;
private ImageView rightView;
public NavigationView(Context context, AttributeSet attrs) {
super(context, attrs);
View view = LayoutInflater.from(context).inflate(R.layout.navigation_view, this, true);
backView = (ImageView) view.findViewById(R.id.iv_nav_back);
backView.setOnClickListener(this);
titleView = (TextView) view.findViewById(R.id.tv_nav_title);
rightView = (ImageView) view.findViewById(R.id.iv_nav_right);
rightView.setOnClickListener(this);
}

/**
* 获取返回按钮
* @return
*/

public ImageView getBackView() {
return backView;
}

/**
* 获取标题控件
* @return
*/

public TextView getTitleView() {
return titleView;
}

/**
* 设置标题
* @param title
*/

public void setTitle(String title){
titleView.setText(title);
}

/**
* 获取右侧按钮,默认不显示
* @return
*/

public ImageView getRightView() {
return rightView;
}

private ClickCallback callback;
/**
* 设置按钮点击回调接口
* @param callback
*/

public void setClickCallback(ClickCallback callback) {
this.callback = callback;
}

/**
* 导航栏点击回调接口
* </br>如若需要标题可点击,可再添加
* @author Asia
*
*/

public static interface ClickCallback{
/**
* 点击返回按钮回调
*/

void onBackClick();

void onRightClick();
}

@Override
public void onClick(View v) {
int id = v.getId();
if (id == R.id.iv_nav_back) {
callback.onBackClick();
return;
}
if (id == R.id.iv_nav_right) {
callback.onRightClick();
return;
}
}
}

NavigationView中包含一个回调接口,在使用时设置一个此接口即可.


使用方式

    主界面布局

    
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical">


<com.asi.customview.view.NavigationView
android:id="@+id/nav_main"
android:layout_width="match_parent"
android:layout_height="wrap_content"/>


<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="@string/hello_world" />

</LinearLayout>

     主界面Java代码

public class MainActivity extends Activity {

@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
requestWindowFeature(Window.FEATURE_NO_TITLE);
setContentView(R.layout.activity_main);
initView();
}

private NavigationView navigationView;
private void initView() {
navigationView = (NavigationView) super.findViewById(R.id.nav_main);
navigationView.setTitle("Title");
navigationView.setClickCallback(new ClickCallback() {

@Override
public void onRightClick() {
DLog.d("点击了右侧按钮!");
ToastUtil.showShort(MainActivity.this, "点击了右侧按钮!");
}

@Override
public void onBackClick() {
DLog.d("点击了返回按钮!");
ToastUtil.showShort(MainActivity.this, "点击了返回按钮!");
finish();
}
});
}


最重要的一点:

转自  http://www.devwiki.net/2015/06/18/Android-View-Custom-Navigation/#more

  评论这张
 
阅读(342)| 评论(0)
推荐 转载

历史上的今天

在LOFTER的更多文章

评论

<#--最新日志,群博日志--> <#--推荐日志--> <#--引用记录--> <#--博主推荐--> <#--随机阅读--> <#--首页推荐--> <#--历史上的今天--> <#--被推荐日志--> <#--上一篇,下一篇--> <#-- 热度 --> <#-- 网易新闻广告 --> <#--右边模块结构--> <#--评论模块结构--> <#--引用模块结构--> <#--博主发起的投票-->
 
 
 
 
 
 
 
 
 
 
 
 
 
 

页脚

网易公司版权所有 ©1997-2018