导航:首页 > 操作系统 > android导航栏添加按钮

android导航栏添加按钮

发布时间:2022-11-29 09:04:33

‘壹’ android 沉浸式/透明式状态栏、导航栏

Android 从4.4开始引进透明状态栏和导航栏的概念,并且在5.0进行了改进,将透明变成了半透明的效果。虽然此特性最早出现在ios,但不否认效果还是很赞的。
至于4.4以下的手机,就不要考虑此特性了,好在4.4以下的手机份额已经非常小了。

我们先来看一下透明状态栏的实现,两种常见效果图如下:

虚拟导航栏并不是所有的手机都有,华为的手机多比较常见,就是上图屏幕底部按钮那块区域。设置导航栏和状态栏类似:

这是官方的解释,大致意思就是我们在布局的最外层设置 android:fitsSystemWindows="true",会在屏幕最上方预留出状态栏高度的padding。

由于fitsSystemWindows属性本质上是给当前控件设置了一个padding,所以我们设置到根布局的话,会导致状态栏是透明的,并且和窗口背景一样。

但是多数情况,我们并不在根布局设置这个属性,我们想要的无外乎是让内容沉浸在状态栏之中。所以我们经常设置在最上端的图片背景、Banner之类的,如果是Toolbar的,我们可以使用一层LinearLayout包裹,并把这个属性设置给LinearLayout,这样就可以避免Toolbar的内容下沉了。如:

上述方法可以解决普通页面的透明式状态栏需求,如有复杂需求可以参考下面这些:
Android 系统状态栏沉浸式/透明化完整解决方案
Android 沉浸式状态栏的实现
Android沉浸式状态栏(透明状态栏)最佳实现
还有开源库推荐: ImmersionBar

‘贰’ 超简单,几行代码搞定Android底部导航栏

咳咳,答应过年增加新功能的,没想到拖到现在,延迟了一个来月,尴尬,尴尬
那个,我们先忽略这尴尬的事情吧,进入正题才是最重要滴

老规矩,先上效果图:

跟原来的图有个很明显的区别,你们也一定都发现了,对不对。那么显眼的小红点,一定都看到了吧。

当然除了这个,还增加了一项功能,虽然不是很明显,但相信也有小伙伴发现了吧,截图的这俩手机屏幕明显大小不同,但是底部导航栏的大小还是相差不大滴。

是的,你们没有看多,这次不仅增加了小红点功能,还增加了底部导航栏的适配,你没有听错,以后底部导航栏也不用那些dp、sp了,都按照UI妹子们标注的px来就可以了,再也不用为了底部导航栏去跟UI妹子解释啥叫dp了。

好了,效果图展示完了,现在该进入枯燥的使用介绍了。

由于这次改动有点大,所以,先介绍下上个稳定版本的用法,到底是用最新的,还是用原来的,就看各位小伙伴的意愿了

上个稳定版本是1.1.3的,引用方式如下
compile 'com.hjm:BottomTabBar:1.1.3'

具体用法如下(备注都加好了,我也就不多废话了):

最新版本是1.2.2的,引用方式如下
compile 'com.hjm:BottomTabBar:1.2.2'

其实1.2.0与1.1.3区别并不大,只有4点改动:

现在默认的,分割线高度都是设置的1个像素。这里以后也固定都用这个默认的高度了,不再对外提供修改的方法。

这就是新增加的适配了,多的也不说了,你们都懂的

标准尺寸,就是UI妹子给你提供的效果图的屏幕尺寸,只要在init()方法里添加上标准尺寸,你就可以放肆的使用px了

这个方法就是控制小红点显示的方法了,index就是需要显示或者隐藏小红点的TabItem,isShow是一个boolean类型的参数,他是控制小红点是否显示的,如果为true,就会显示小红点;如果为false,就会隐藏小红点

1.2.2版本新增了两个方法

介绍到这里,超简单的底部导航栏,第二阶段就可以告一段落了。以后还会持续优化,完善的。
第三阶段我打算封装一下有中间凸起的底部导航栏,这个功能我本地已经做了,但是封装进去的时候,封装的不理想,这次就没有上线,留作下次了。

最后,再上个 GitHub 地址

‘叁’ android 4.4怎样显示导航栏

安卓 4.4 以上的版本支持隐藏导航栏,也就是那三个虚拟的按键,本篇经验就介绍如何来隐藏着三个按键。 工具/原料 安卓4.4 以上版本的手机 方法/步骤 安卓4.4以上版本,增加了虚拟的三个按键,谷歌称此三个按钮为导航栏,这三个导航栏是可以隐藏...

‘肆’ Android ViewPager + Fragment 实现导航栏(可以左右滑动)

先上图

使用HorizontalScrollView可以让超出屏幕的导航栏可以滑动,每个RadioButton代表一个导航标题,android:button="@null"去掉RadioButton的选中圆圈

选中的下划线xml文件

将RadioButton导航栏的标题装在一个list集合里面,新增标题的时候可以直接在list里添加RadioButton的id,简约了ViewPage滑动定位到相应的RadioButton和相应的Fragment,不用when每个id去判断。

增加标题时也要add对应的Fragment

继承FragmentStatePagerAdapter 。当ViewPager中的Fragment数量相对较多时继承FragmentStatePagerAdapter,少时可以继承FragmentPagerAdapter

‘伍’ 如何隐藏/显示 android 系统的虚拟导航栏/按键

安卓 4.4 以上的版本支持隐藏导航栏,也就是那三个虚拟的按键,本篇经验就介绍如何来隐藏着三个按键。
工具/原料
安卓4.4 以上版本的手机
方法/步骤
安卓4.4以上版本,增加了虚拟的三个按键,谷歌称此三个按钮为导航栏,这三个导航栏是可以隐藏起来的,以节省更多的屏幕空间。
点击设置,进入手机设置。
步骤阅读
在设置中,找到“导航栏可以隐藏”的设置项,将其开启。
开启后,立即生效,点击返回。可以发现导航栏左边多了一个V形的隐藏按钮。点击它即可隐藏导航栏。
隐藏后的效果。
步骤阅读
如果需要让导航栏再次出现,只需在屏幕底部,向上滑动
向上滑动之后,导航栏就再次显示出来。

‘陆’ android如何在系统导航栏旁显示menu按键

要想让menu按键显示在系统导航栏旁,需要改变AndroidManifest内的
内的最小
sdk版本。最高为10,不得高于10,否则无法现实在系统导航栏旁。个人想法是:Android3.0后加入了ActionBar控件和虚拟的按键,而ActionBar整合了menu功能导致android3.0以上的menu按钮只能现实在ActionBar上,无法显示在系统导航栏旁。

‘柒’ android 怎么实现左侧导航栏

Android左侧推出导航菜单可以让Activity继承PopupWindow类来实现的弹出窗体,布局可以根据自己定义设计。弹出效果主要使用了translate和alpha样式实现。具体的做法是下列代码:
第一步:设计弹出窗口xml:

Xml代码
<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout
xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:gravity="center_horizontal"
android:orientation="vertical"
>

<LinearLayout
android:id="@+id/pop_layout"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:gravity="center_horizontal"
android:orientation="vertical"
android:layout_alignParentBottom="true"
android:background="@drawable/btn_style_alert_dialog_background"
>

<Button
android:id="@+id/btn_take_photo"
android:layout_marginLeft="20dip"
android:layout_marginRight="20dip"
android:layout_marginTop="20dip"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:text="拍照"
android:background="@drawable/btn_style_alert_dialog_button"
android:textStyle="bold"
/>

<Button
android:id="@+id/btn_pick_photo"
android:layout_marginLeft="20dip"
android:layout_marginRight="20dip"
android:layout_marginTop="5dip"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:text="从相册选择"
android:background="@drawable/btn_style_alert_dialog_button"
android:textStyle="bold"
/>

<Button
android:id="@+id/btn_cancel"
android:layout_marginLeft="20dip"
android:layout_marginRight="20dip"
android:layout_marginTop="15dip"
android:layout_marginBottom="15dip"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:text="取消"
android:background="@drawable/btn_style_alert_dialog_cancel"
android:textColor="#ffffff"
android:textStyle="bold"

/>
</LinearLayout>
</RelativeLayout>
第二步:创建SelectPicPopupWindow类继承PopupWindow:

java代码
import android.app.Activity;
import android.content.Context;
import android.graphics.drawable.ColorDrawable;
import android.view.LayoutInflater;
import android.view.MotionEvent;
import android.view.View;
import android.view.View.OnClickListener;
import android.view.View.OnTouchListener;
import android.view.ViewGroup.LayoutParams;
import android.widget.Button;
import android.widget.PopupWindow;

public class SelectPicPopupWindow extends PopupWindow {

private Button btn_take_photo, btn_pick_photo, btn_cancel;
private View mMenuView;

public SelectPicPopupWindow(Activity context,OnClickListener itemsOnClick) {
super(context);
LayoutInflater inflater = (LayoutInflater) context
.getSystemService(Context.LAYOUT_INFLATER_SERVICE);
mMenuView = inflater.inflate(R.layout.alert_dialog, null);
btn_take_photo = (Button) mMenuView.findViewById(R.id.btn_take_photo);
btn_pick_photo = (Button) mMenuView.findViewById(R.id.btn_pick_photo);
btn_cancel = (Button) mMenuView.findViewById(R.id.btn_cancel);
//取消按钮
btn_cancel.setOnClickListener(new OnClickListener() {

public void onClick(View v) {
//销毁弹出框
dismiss();
}
});
//设置按钮监听
btn_pick_photo.setOnClickListener(itemsOnClick);
btn_take_photo.setOnClickListener(itemsOnClick);
//设置SelectPicPopupWindow的View
this.setContentView(mMenuView);
//设置SelectPicPopupWindow弹出窗体的宽
this.setWidth(LayoutParams.FILL_PARENT);
//设置SelectPicPopupWindow弹出窗体的高
this.setHeight(LayoutParams.WRAP_CONTENT);
//设置SelectPicPopupWindow弹出窗体可点击
this.setFocusable(true);
//设置SelectPicPopupWindow弹出窗体动画效果
this.setAnimationStyle(R.style.AnimBottom);
//实例化一个ColorDrawable颜色为半透明
ColorDrawable dw = new ColorDrawable(0xb0000000);
//设置SelectPicPopupWindow弹出窗体的背景
this.setBackgroundDrawable(dw);
//mMenuView添加OnTouchListener监听判断获取触屏位置如果在选择框外面则销毁弹出框
mMenuView.setOnTouchListener(new OnTouchListener() {

public boolean onTouch(View v, MotionEvent event) {

int height = mMenuView.findViewById(R.id.pop_layout).getTop();
int y=(int) event.getY();
if(event.getAction()==MotionEvent.ACTION_UP){
if(y<height){
dismiss();
}
}
return true;
}
});

}

}

第三步:编写MainActivity类实现测试:

Java代码
import android.app.Activity;
import android.os.Bundle;
import android.view.Gravity;
import android.view.View;
import android.view.View.OnClickListener;
import android.widget.TextView;

public class MainActivity extends Activity {

//自定义的弹出框类
SelectPicPopupWindow menuWindow;

@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
TextView tv = (TextView) this.findViewById(R.id.text);
//把文字控件添加监听,点击弹出自定义窗口
tv.setOnClickListener(new OnClickListener() {
public void onClick(View v) {
//实例化SelectPicPopupWindow
menuWindow = new SelectPicPopupWindow(MainActivity.this, itemsOnClick);
//显示窗口
menuWindow.showAtLocation(MainActivity.this.findViewById(R.id.main), Gravity.BOTTOM|Gravity.CENTER_HORIZONTAL, 0, 0); //设置layout在PopupWindow中显示的位置
}
});
}

//为弹出窗口实现监听类
private OnClickListener itemsOnClick = new OnClickListener(){

public void onClick(View v) {
menuWindow.dismiss();
switch (v.getId()) {
case R.id.btn_take_photo:
break;
case R.id.btn_pick_photo:
break;
default:
break;
}

}

};

}
上述的代码实现了从底部弹出,也可以根据PopupWindow类设置从左下部弹出。
Android的对话框有两种:PopupWindow和AlertDialog。它们的不同点在于:
AlertDialog的位置固定,而PopupWindow的位置可以随意
AlertDialog是非阻塞线程的,而PopupWindow是阻塞线程的
PopupWindow的位置按照有无偏移分,可以分为偏移和无偏移两种;按照参照物的不同,可以分为相对于某个控件(Anchor锚)和相对于父控件。具体如下
showAsDropDown(View anchor):相对某个控件的位置(正左下方),无偏移
showAsDropDown(View anchor, int xoff, int yoff):相对某个控件的位置,有偏移
showAtLocation(View parent, int gravity, int x, int y):相对于父控件的位置(例如正中央Gravity.CENTER,下方Gravity.BOTTOM等),可以设置偏移或无偏移

‘捌’ android底部导航栏怎么做,

可以使用radiogroup做底部导航

radiogroup的属性自定义,并设置android:button="@null"

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="fill_parent"
android:layout_height="60dip"
android:background="@drawable/bottom_bg"
android:orientation="horizontal" >
<RadioGroup
android:layout_width="fill_parent"
android:layout_height="match_parent"
android:orientation="horizontal" >
<RadioButton
style="@style/navigation_bottom_radio"
android:drawableTop="@drawable/bottom_home_d"
android:text="@string/home_tv" />
<RadioButton
style="@style/navigation_bottom_radio"
android:drawableTop="@drawable/bottom_looks_d"
android:text="@string/style_tv" />
<RadioButton
style="@style/navigation_bottom_radio"
android:drawableTop="@drawable/bottom_cam"
android:gravity="center"
android:text="拍照"
/>
<RadioButton
style="@style/navigation_bottom_radio"
android:drawableTop="@drawable/bottom_shopping_d"
android:text="@string/shopping_tv" />
<RadioButton
style="@style/navigation_bottom_radio"
android:drawableTop="@drawable/bottom_show_d"
android:text="@string/show_tv" />
</RadioGroup>
</LinearLayout>

<resources>
<style name="navigation_bottom_radio">
<!-- 内部组件的排列 -->
<item name="android:gravity">center_horizontal</item>
<!-- 背景样式 -->
<item name="android:background">@drawable/style_navigation_radio</item>
<!-- 宽度 -->
<item name="android:layout_width">fill_parent</item>
<!-- 高度 -->
<item name="android:layout_height">wrap_content</item>
<!-- 设置RadioButton的原来图片为空 -->
<item name="android:button">@null</item>
<!-- 与其他组件宽度占相同比重 -->
<item name="android:layout_weight">1.0</item>
<!-- 底部的空隙 -->
<item name="android:paddingBottom">2.0dip</item>
<!-- 顶部的空隙 -->
<item name="android:paddingTop">2.0dip</item>
<!-- 文字的大小 -->
<item name="android:textSize">11dip</item>
<!-- 文字的颜色 -->
<item name="android:textColor">@color/white</item>
</style>
</resources>
参考:http://blog.csdn.net/longyi_java/article/details/8485826

‘玖’ 如何隐藏/显示 android 系统的虚拟导航栏/按键

设置config_showNavigationBar为true显示,false隐藏。 android4.0以后添加了虚拟导航栏(NavigationBar)新特性,就是在手机和平板的屏幕下面添加了(Back返回键,Home键等),但是手机上都有硬性按键,所以我们有时间要去掉或者隐藏掉虚拟按键

阅读全文

与android导航栏添加按钮相关的资料

热点内容
女主高中就怀孕的小说 浏览:10
app为什么必须要获取手机号码 浏览:58
实用的网页编程 浏览:424
宝鸡小程序定制开发源码 浏览:432
十大军事历史穿越小说 浏览:56
爱的共享韩 浏览:179
中文字幕推荐排行榜 浏览:589
李采镡所有电影 浏览:348
前度2未删减 浏览:866
日本一部关于平行时空的电影 浏览:346
伤寒论原文pdf 浏览:29
剧情肉的电影 浏览:803
下行 电影在线观看 浏览:786
欧美大尺度男同电影 浏览:985
张学友最后大佬电影 浏览:777
心理罪中廖亚凡怀了孩子 浏览:844
服务器如何开权限设置密码 浏览:271
申请资料填写小程序源码 浏览:177
服务器怎么私信别人 浏览:994
phpxdebug关闭 浏览:690