Titlebarl的三种去除方式和requestwindowfeature,configchanges的详细解读
2016-09-25 09:29
344 查看
在进行android开发时,每个Activity会默认带上一个title bar用以显示程序名,有时为了扩大屏幕的显示区域需要去掉这个titlebar,去掉屏幕上的title bar有3个方法,
第一个方法是在代码去掉title bar
在Activity的onCreate中加入如下代码:
[java] view
plain copy
this.requestWindowFeature(Window.FEATURE_NO_TITLE);
放置于setContentView(R.layout.activity_main);之前皆可。
但是使用这种方法,是在Activity将要显示的时候,仍然会出现title bar,然后再将其去掉,用户体验不好。
以下是对this.requestwindowFeature(window.FEATURE_NO_TITLE)的详细解读:
this.requestWindowFeature(Window.FEATURE_NO_TITLE)相关
requestWindowFeature(featrueId),它的功能是启用窗体的扩展特性。参数是Window类中定义的常量。
一、枚举常量
1.DEFAULT_FEATURES:系统默认状态,一般不需要指定
2.FEATURE_CONTEXT_MENU:启用ContextMenu,默认该项已启用,一般无需指定
3.FEATURE_CUSTOM_TITLE:自定义标题。当需要自定义标题时必须指定。如:标题是一个按钮时
4.FEATURE_INDETERMINATE_PROGRESS:不确定的进度
5.FEATURE_LEFT_ICON:标题栏左侧的图标
6.FEATURE_NO_TITLE:没有标题
7.FEATURE_OPTIONS_PANEL:启用“选项面板”功能,默认已启用。
8.FEATURE_PROGRESS:进度指示器功能
9.FEATURE_RIGHT_ICON:标题栏右侧的图标
二、详解
默认显示状态
1.FEATURE_CUSTOM_TITLE详解
这是因为没有设置Featrue
在上面代码后加:getWindow().setFeatureInt(Window.FEATURE_CUSTOM_TITLE, R.layout.title);
自定义标题完成,它是一个xml文件布局
2.FEATURE_INDETERMINATE_PROGRESS详解
可以用来表示一个进程正在运行
3.FEATURE_LEFT_ICON和FEATURE_RIGHT_ICON详解
4.FEATURE_NO_TITLE详解
分类: Android开发技术学习
-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
完 美 分 割 线
-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
第二种方法是使用style配置文件,步骤如下:
1.在res/values文件夹下创建一个xml文件,名为mainStyle.xml,内容如下:
<
1109e
div class="bar" style="padding-left:45px;">
[java] view
plain copy
<?xml version="1.0" encoding="utf-8"?>
<resources>
<style name="NoTitle" parent="android:Theme">
<item name="android:windowNoTitle">true</item>
</style>
</resources>
2.然后在AndroidManifest.xml中需要去掉title bar的activities的节点上加上一个样式属性,代码如下:
[java] view
plain copy
<activityandroid:name=".view.AutoTaskDemo" android:label="@string/app_name"
android:configChanges="keyboardHidden|orientation|locale"android:theme="@style/NoTitle">
android:configChanges详解:
newConfig).这样就可以在这个方法里调整显示方式.
[java] view
plain copy
public void onConfigurationChanged(Configuration newConfig) {
try {
super.onConfigurationChanged(newConfig);
if (this.getResources().getConfiguration().orientation == Configuration.ORIENTATION_LANDSCAPE) {
Log.v("Himi", "onConfigurationChanged_ORIENTATION_LANDSCAPE");
} else if (this.getResources().getConfiguration().orientation == Configuration.ORIENTATION_PORTRAIT) {
Log.v("Himi", "onConfigurationChanged_ORIENTATION_PORTRAIT");
}
} catch (Exception ex) {
}
}
<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
package="com.himi" android:versionCode="1" android:versionName="1.0">
<application android:icon="@drawable/icon" android:label="@string/app_name">
<activity android:name=".MainActivity" android:label="@string/app_name"
android:configChanges="keyboardHidden|orientation">
<intent-filter>
<action android:name="android.intent.action.MAIN" />
<category android:name="android.intent.category.LAUNCHER" />
</intent-filter>
</activity>
</application>
<uses-sdk android:minSdkVersion="4" />
</manifest>
-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
完 美 分 割 线
-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
第三种方法是直接在AndroidManifest.xml中进行修改,
把需要去掉title bar的activities的节点上加上一个样式属性,代码如下:
[java] view
plain copy
<activityandroid:name=".view.SettingActivity"
android:configChanges="keyboardHidden|orientation"android:theme="@android:style/Theme.NoTitleBar"/>
也可以在AndroidManifest.xml文件的application节点上修改,对所有的activity都有效,代码如下:
[java] view
plain copy
<application android:icon="@drawable/icon" android:label="@string/app_name" android:theme="@android:style/Theme.NoTitleBar">
第一个方法是在代码去掉title bar
在Activity的onCreate中加入如下代码:
[java] view
plain copy
this.requestWindowFeature(Window.FEATURE_NO_TITLE);
放置于setContentView(R.layout.activity_main);之前皆可。
但是使用这种方法,是在Activity将要显示的时候,仍然会出现title bar,然后再将其去掉,用户体验不好。
以下是对this.requestwindowFeature(window.FEATURE_NO_TITLE)的详细解读:
this.requestWindowFeature(Window.FEATURE_NO_TITLE)相关
requestWindowFeature(featrueId),它的功能是启用窗体的扩展特性。参数是Window类中定义的常量。
一、枚举常量
1.DEFAULT_FEATURES:系统默认状态,一般不需要指定
2.FEATURE_CONTEXT_MENU:启用ContextMenu,默认该项已启用,一般无需指定
3.FEATURE_CUSTOM_TITLE:自定义标题。当需要自定义标题时必须指定。如:标题是一个按钮时
4.FEATURE_INDETERMINATE_PROGRESS:不确定的进度
5.FEATURE_LEFT_ICON:标题栏左侧的图标
6.FEATURE_NO_TITLE:没有标题
7.FEATURE_OPTIONS_PANEL:启用“选项面板”功能,默认已启用。
8.FEATURE_PROGRESS:进度指示器功能
9.FEATURE_RIGHT_ICON:标题栏右侧的图标
二、详解
默认显示状态
1.FEATURE_CUSTOM_TITLE详解
this.requestWindowFeature(Window.FEATURE_CUSTOM_TITLE); setContentView(R.layout.main);
这是因为没有设置Featrue
在上面代码后加:getWindow().setFeatureInt(Window.FEATURE_CUSTOM_TITLE, R.layout.title);
自定义标题完成,它是一个xml文件布局
<?xml version="1.0" encoding="utf-8"?> <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="wrap_content" android:layout_height="wrap_content" > <ImageView android:layout_width="wrap_content" android:layout_height="wrap_content" android:src="@drawable/ic_launcher" /> <TextView android:id="@+id/text" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_alignParentLeft="true" android:textColor="#000000" android:text="FEATURE_CUSTOM_TITLE" /> </LinearLayout>
2.FEATURE_INDETERMINATE_PROGRESS详解
可以用来表示一个进程正在运行
this.requestWindowFeature(Window.FEATURE_INDETERMINATE_PROGRESS); setContentView(R.layout.main); getWindow().setFeatureInt(Window.FEATURE_INDETERMINATE_PROGRESS, R.layout.progress); setProgressBarIndeterminateVisibility(true);
<?xml version="1.0" encoding="utf-8"?> <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="wrap_content" android:layout_height="wrap_content" > <ProgressBar android:id="@+id/progress" style="?android:attr/progressBarStyleSmallTitle" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_gravity="center_vertical" > </ProgressBar> </LinearLayout>
3.FEATURE_LEFT_ICON和FEATURE_RIGHT_ICON详解
//111 requestWindowFeature(Window.FEATURE_RIGHT_ICON); setContentView(R.layout.main); getWindow().setFeatureDrawableResource(Window.FEATURE_RIGHT_ICON,R.drawable.ic_launcher); //222 requestWindowFeature(Window.FEATURE_LEFT_ICON); setContentView(R.layout.main); getWindow().setFeatureDrawableResource(Window.FEATURE_LEFT_ICON,R.drawable.ic_launcher);
4.FEATURE_NO_TITLE详解
this.requestWindowFeature(Window.FEATURE_NO_TITLE); setContentView(R.layout.main);
分类: Android开发技术学习
-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
完 美 分 割 线
-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
第二种方法是使用style配置文件,步骤如下:
1.在res/values文件夹下创建一个xml文件,名为mainStyle.xml,内容如下:
<
1109e
div class="bar" style="padding-left:45px;">
[java] view
plain copy
<?xml version="1.0" encoding="utf-8"?>
<resources>
<style name="NoTitle" parent="android:Theme">
<item name="android:windowNoTitle">true</item>
</style>
</resources>
2.然后在AndroidManifest.xml中需要去掉title bar的activities的节点上加上一个样式属性,代码如下:
[java] view
plain copy
<activityandroid:name=".view.AutoTaskDemo" android:label="@string/app_name"
android:configChanges="keyboardHidden|orientation|locale"android:theme="@style/NoTitle">
android:configChanges详解:
VALUE | DESCRIPTION |
"mcc" | 国际移动用户识别码所属国家代号是改变了----- sim被侦测到了,去更新mcc mcc是移动用户所属国家代号 |
"mnc" | 国际移动用户识别码的移动网号码是改变了------ sim被侦测到了,去更新mnc MNC是移动网号码,最多由两位数字组成,用于识别移动用户所归属的移动通信网 |
"locale" | 地址改变了-----用户选择了一个新的语言会显示出来 |
"touchscreen" | 触摸屏是改变了------通常是不会发生的 |
"keyboard" | 键盘发生了改变----例如用户用了外部的键盘 |
"keyboardHidden" | 键盘的可用性发生了改变 |
"navigation" | 导航发生了变化-----通常也不会发生 |
"screenLayout" | 屏幕的显示发生了变化------不同的显示被激活 |
"fontScale" | 字体比例发生了变化----选择了不同的全局字体 |
"uiMode" | 用户的模式发生了变化 |
"orientation" | 屏幕方向改变了 |
"screenSize" | 屏幕大小改变了 |
"smallestScreenSize" | 屏幕的物理大小改变了,如:连接到一个外部的屏幕上 |
android:configChanges
在android中每次屏幕的切换动会重启Activity,所以应该在Activity销毁前保存当前活动的状态,在Activity再次Create的时候载入配置。在activity加上android:configChanges="keyboardHidden|orientation"属性,就不会重启activity.而只是调用onConfigurationChanged(ConfigurationnewConfig).这样就可以在这个方法里调整显示方式.
[java] view
plain copy
public void onConfigurationChanged(Configuration newConfig) {
try {
super.onConfigurationChanged(newConfig);
if (this.getResources().getConfiguration().orientation == Configuration.ORIENTATION_LANDSCAPE) {
Log.v("Himi", "onConfigurationChanged_ORIENTATION_LANDSCAPE");
} else if (this.getResources().getConfiguration().orientation == Configuration.ORIENTATION_PORTRAIT) {
Log.v("Himi", "onConfigurationChanged_ORIENTATION_PORTRAIT");
}
} catch (Exception ex) {
}
}
<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
package="com.himi" android:versionCode="1" android:versionName="1.0">
<application android:icon="@drawable/icon" android:label="@string/app_name">
<activity android:name=".MainActivity" android:label="@string/app_name"
android:configChanges="keyboardHidden|orientation">
<intent-filter>
<action android:name="android.intent.action.MAIN" />
<category android:name="android.intent.category.LAUNCHER" />
</intent-filter>
</activity>
</application>
<uses-sdk android:minSdkVersion="4" />
</manifest>
-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
完 美 分 割 线
-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
第三种方法是直接在AndroidManifest.xml中进行修改,
把需要去掉title bar的activities的节点上加上一个样式属性,代码如下:
[java] view
plain copy
<activityandroid:name=".view.SettingActivity"
android:configChanges="keyboardHidden|orientation"android:theme="@android:style/Theme.NoTitleBar"/>
也可以在AndroidManifest.xml文件的application节点上修改,对所有的activity都有效,代码如下:
[java] view
plain copy
<application android:icon="@drawable/icon" android:label="@string/app_name" android:theme="@android:style/Theme.NoTitleBar">
相关文章推荐
- mysql备份 小结 (三种方式的详细解读)
- 详细解读JAVA多线程实现的三种方式
- 添加RequestWindowFeature去除标题崩溃
- android studio 中去除actionbar 标题栏的方法。requestWindowFeature(Window.FEATURE_NO_TITLE)无效
- 详细解读分布式锁原理及三种实现方式
- Android使用requestWindowFeature(Window.FEATURE_NO_TITLE)方法去除标题无效解决办法
- 【Android】使用requestWindowFeature(Window.FEATURE_NO_TITLE)方法去除标题无效解决办法
- requestWindowFeature()的应用 (转)
- 在webForm中WebRequest\WebClient\WebBrowser获取远程页面源码的三种方式(downmoon)
- Android 中的 requestWindowFeature
- android window.requestWindowFeature()常用方法
- Android 中的 requestWindowFeature
- Android 应用程序窗体显示状态操作(requestWindowFeature()的应用) [轉載]
- window.XMLHttpRequest 详细介绍
- android window.requestWindowFeature()常用方法
- Android 应用程序窗体显示状态操作(requestWindowFeature()的应用)[转]
- Android 应用程序窗体显示状态操作(requestWindowFeature()的应用)
- 在webForm中WebRequest\WebClient\WebBrowser获取远程页面源码的三种方式(downmoon)
- Android 应用程序窗体显示状态操作----requestWindowFeature()的应用
- Android 应用程序窗体显示状态操作(requestWindowFeature()的应用)