如何使用安卓原生导航栏
‘壹’ 安卓手机应用开发,如何实现设置页面顶部添加导航栏,以及自定义风格
自定义顶部标题风格,在每个界面xml中调用
‘贰’ 怎样设置导航栏
一般是:设置——全部设置——导航栏,当然可能不同的手机型号,设置方法不同。仅供参考。而涉及导航栏的具体步骤如下面的表格会写得很具体。
在屏幕上找到如图所示红色方框标记的“设置”选项,点击进如设置界面。
点击选择下图所示红色方框标记的“导航栏”选项。
我们可以看到下图所示目前“导航栏可隐藏”选项是关闭的。
点击打开红色方框标记的“导航栏可隐藏”选项后,我们可以看到如图下方红色标记的位置多了一个向下的“箭头”,这个“箭头”就是可以隐藏导航栏的选项。点击这个“箭头后”导航栏便会消失。
如下图所示,点击“箭头”后,导航栏已经在屏幕界面中消失了。如果再想导航栏出现,只需要拇指从屏幕最下方往上滑动一小段距离即可。
导航栏几个按键的位置还是可以调换的,如下图所示我们选中的导航栏按键分布已经和前面图片上显示的不一样了。
‘叁’ Android 将App的内容延伸到状态栏/导航栏
来自我的CSDN博客: http://blog.csdn.net/dahaohan/article/details/52175190
看过Android的桌面应用都是介样的:
如何让自己的应用也达到这般效果呢?这里就介绍几种常用的方法以及它们之间的区别。
首先展示下此次demo的布局和初始状态:
初始效果图如下:
使用这个方式首先要理解几个概念,窗口层级以及窗口background/窗口透明:
Google在API-19 以及API-21新增对状态栏/导航栏窗口透明和颜色的控制:
对应的在主题内即可控制:
这里首先要明了这里状态栏和导航栏窗口是系统级窗口而Activity对应的时应用窗口,它们属于不同的窗口层级;
然后状态栏/导航栏系统级窗口是在App应用窗口之上,故而Activity应用窗口虽然有整个屏幕的大小,但是可显示内容的区域得除去其上叠加的不透明的窗口区域。详细的窗口计算绘制可参考大神老罗的博文:
Android窗口管理服务WindowManagerService计算Activity窗口大小的过程分析
下面来使用主题控制导航栏/状态栏透明,同时看看上述两种设置透明的方式效果有何不同:
初始桌面和启动Activity效果图:
可以看到虽然导航栏/状态栏透明了,当时应用窗口显示的内容依然只是除去了两个系统窗口之外的区域,并没有衍生到导航栏/状态栏之下。
效果如下:
可以看到已经将应用的内容布局延伸到导航栏/状态栏下方了,来看看关于android:windowTranslucentStatus
android:windowTranslucentNavigation的官方说明看看来理解其与设置color transparent的区别:
根据FLAG的说明,可以看出设置该标志位等同于View申请设置:
PS:从效果图看,虽然布局延伸到状态栏导航栏区域,但是相应的内容“hello world”文字也被状态栏/导航栏遮住了。在布局根视图设置fitsSystemWindows为true可以使得,系统自动为视图添加一个状态栏/导航栏高度的padding:
效果如下:
查看SYSTEM_UI_FLAG_LAYOUT_HIDE_NAVIGATION 和 SYSTEM_UI_FLAG_LAYOUT_FULLSCREEN的说明,可以发现其实还有两个非常接近的FLAG:
根据官方的说明提示,SYSTEM_UI_FLAG_FULLSCREEN / SYSTEM_UI_FLAG_HIDE_NAVIGATION主要用于动态切换隐藏/显示系统导航栏/状态栏;例如书籍阅读应用/视频播放应用等。而像游戏类的全屏应用则推荐使用window flag。
上述的透明导航栏/状态栏等API基本是需要API-19或是API-21才能使用的,这里还有一种API-1的方案能够实现布局内容全屏:
实际上只需要设置FLAG_LAYOUT_NO_LIMITS就足够了;这FLAG是看Android原生的Launcher / Keyguard源码,看到有用到如此设置,其窗口设置具体原理我也没有弄清..... 有大神了解可以指点下。
PS:这个套路下,使用fitsSystemWindows="true"是无效的,智能自己控制号布局位置。
‘肆’ 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等),可以设置偏移或无偏移
‘伍’ 华为手机导航栏被禁用,怎么启用
在系统设置里找到显示,进入显示里面就能找到导航的开关。
华为技术有限公司,成立于1987年,总部位于广东省深圳市龙岗区。华为是全球领先的信息与通信技术(ICT)解决方案供应商,专注于ICT领域,坚持稳健经营、持续创新、开放合作,在电信运营商、企业、终端和云计算等领域构筑了端到端的解决方案优势,为运营商客户、企业客户和消费者提供有竞争力的ICT解决方案、产品和服务,并致力于实现未来信息社会、构建更美好的全联接世界。2013年,华为首超全球第一大电信设备商爱立信,排名《财富》世界500强第315位。
华为的产品和解决方案已经应用于全球170多个国家,服务全球运营商50强中的45家及全球1/3的人口。2017年6月6日,《2017年BrandZ最具价值全球品牌100强》公布,华为名列第49位。2019年7月22日美国《财富》杂志发布了最新一期的世界500强名单 ,华为排名第61位。 2018年《中国500最具价值品牌》华为居第六位。12月18日,《2018世界品牌500强》揭晓,华为排名第58位。
‘陆’ 安卓原生系统的导航键怎么隐藏收起来
安卓原生系统的导航键可以从设置显示方式里面隐藏
‘柒’ 华为手机系统导航栏被禁用怎么解开
1. 为了防止点击虚拟按键时误触到上方的应用图标,在虚拟按键的最上方设置了很小的触摸盲区。同时在三个导航栏中间也设置了触摸盲区另外,为了防止误触启动应用,在桌面点击图标打开应用时,需要点击到应用图标的中间位置才能启动应用程序。
2. 单手操作时,手掌会与屏幕边缘位置接触,导致拇指不能操作屏幕,出现触屏不灵,建议出现此情况时使用双手操作手机。
3. 快速连续点击虚拟按键时,偶现点击不响应。此为安卓原生设计,为了避免误触有时不会响应导航栏操作。建议在操作虚拟按键时不要连续点击过快。
4. 当长时间使用手机后手指出现汗液,屏幕出现脏污或沾上水渍时;当手指或屏幕上沾染了水滴时。建议您及时擦干手指,定期清理屏幕,保持屏幕清洁干燥。
5. 请检查手套模式是否打开。手套模式会提升触摸屏灵敏度,如果不需要用,建议关闭此模式。
6. 请检查屏幕贴膜是否较厚。建议更换厚度不超过0.2毫米的贴膜。
7. 部分第三方软件比如“一键锁屏”会与系统自带的锁屏产生冲突,导致出现跳屏的现象,如跳到锁屏界面、相机界面等情况。建议卸载第三方“一键锁屏”等类型的软件。
8. 请重启手机。手机运行软件过多会导致触摸屏无反应。
9. 请将手机恢复出厂设置,或将手机升级到最新版本。
10. 经过上述操作后问题仍然存在,则可能是触摸屏硬件出现问题,请提前备份好数据并携带购机发票前往售后服务点检修。
‘捌’ 如何隐藏/显示 android 系统的虚拟导航栏/按键
安卓 4.4 以上的版本支持隐藏导航栏,也就是那三个虚拟的按键,本篇经验就介绍如何来隐藏着三个按键。
工具/原料
安卓4.4 以上版本的手机
方法/步骤
安卓4.4以上版本,增加了虚拟的三个按键,谷歌称此三个按钮为导航栏,这三个导航栏是可以隐藏起来的,以节省更多的屏幕空间。
点击设置,进入手机设置。
步骤阅读
在设置中,找到“导航栏可以隐藏”的设置项,将其开启。
开启后,立即生效,点击返回。可以发现导航栏左边多了一个V形的隐藏按钮。点击它即可隐藏导航栏。
隐藏后的效果。
步骤阅读
如果需要让导航栏再次出现,只需在屏幕底部,向上滑动
向上滑动之后,导航栏就再次显示出来。
‘玖’ android导航栏怎么设置哪个显示
实现方式应该有好几种: 1、使用Layout_weight固定上下大小,中间的ListView同样,同时中间的listView把它的高度可以设置成一个固定值。 2、还可以使用ViewPager控件,也需要使用layout_weight按比例把界面分了。