当前位置:首页 » 安卓系统 » androidtitlebar自定义

androidtitlebar自定义

发布时间: 2024-09-25 01:11:23

① 怎么自定义Android标题栏修改TitleBar的布局

Android程序默认的Activity标题栏只能显示一段文字,而且不能改变它的布局、颜色、标题栏的高度等。如果想要在标题栏加上个图标、button、输入框、进度条、修改标题栏颜色等,只能使用自定义的标题栏。自定义标题栏可以通过在onCreate函数中添加以下代码来实现,需要注意的是代码的顺序必须按照下面的样式,否则将无效。
requestWindowFeature(Window.FEATURE_CUSTOM_TITLE);
setContentView(R.layout.mainactivity); //Activity的布局
getWindow().setFeatureInt(Window.FEATURE_CUSTOM_TITLE,R.layout.titlebar); //标题栏的布局
虽然上面这样可以在标题栏加入一些控件,但是仍然不能改变标题栏的高度、背景色,要想达到这个目的,只能使用theme(主题)。因此往project里先添加一个style。改变背景色修改android:windowTitleBackgroundStyle的值,改变标题栏高度则修改android:windowTitleSize的值。下面是一个示例:






接着再修改AndroidManifest.xml文件,找到要自定义标题栏的Activity,添加上android:theme值,比如:

java代码
android:theme值就是上面那个style.xml文件里定义的一个style的name值。

按照以上的步骤,修改标题栏布局、高度、背景色的功能就实现了。

② 如何在Android中实现分享功能

分享功能有很多可以使用别人开发好的SDK,还有一种最简单的方法是titlebar上显示分享,也就是在menu下添加如下代码能实现分享功能:
<menu xmlns:android="http://schemas.android.com/apk/res/android" >
<item
android:id="@+id/action_share"
android:actionProviderClass="android.widget.ShareActionProvider"
android:showAsAction="ifRoom"
android:title="分享"/>
</menu>

③ Android去除状态栏的方法汇总

一、隐藏标题栏

//隐藏标题栏

this.requestWindowFeature(Window.FEATURE_NO_TITLE);

二、隐藏状态栏

//隐藏状态栏

this.getWindow().setFlags(WindowManager.LayoutParams.FLAG_FULLSCREEN, WindowManager.LayoutParams.FLAG_FULLSCREEN);

三、去掉所有Activity界面的标题栏

修改AndroidManifest.xml

在application 标签中添加android:theme="@android:style/Theme.NoTitleBar"

四、去掉所有Activity界面的TitleBar 和StatusBar

修改AndroidManifest.xml

在application 标签中添加

android:theme="@android:style/Theme.NoTitleBar.Fullscreen"

④ android标题栏高度是多少

1、获取标题栏高度: getWindow().findViewById(Window.ID_ANDROID_CONTENT)这个方法获取到的view就是程序不包括标题栏的部分,然后就可以知道标题栏的高度了。

1
2
3

int contentTop = getWindow().findViewById(Window.ID_ANDROID_CONTENT).getTop();
//statusBarHeight是上面所求的状态栏的高度
int titleBarHeight = contentTop - statusBarHeight

扩展:
1、获取状态栏高度:
decorView是window中的最顶层view,可以从window中获取到decorView,然后decorView有个getWindowVisibleDisplayFrame方法可以获取到程序显示的区域,包括标题栏,但不包括状态栏。于是,我们就可以算出状态栏的高度了。

1
2
3

Rect frame = new Rect();
getWindow().getDecorView().getWindowVisibleDisplayFrame(frame);
int statusBarHeight = frame.top;

2、获取屏幕高度

1
2
3
4
5

方法1:
WindowManager windowManager = getWindowManager();
Display display = windowManager.getDefaultDisplay();
screenWidth = display.getWidth();
screenHeight = display.getHeight();

1
2
3
4
5

方法2:
DisplayMetrics dm = new DisplayMetrics();
this.getWindowManager().getDefaultDisplay().getMetrics(dm);//this指当前activity
screenWidth =dm.widthPixels;
screenHeight =dm.heightPixels;

⑤ android中include和merge标记的区别和使用

include和merge标记的作用主要是为了解决layout的重用问题。
比如我们有三四个Activity但是他们都要用到同一个样式的标题栏,虽然我们把一样的代码个三四遍也没关系,但实在是太丑了,而且效率太低,如果这个标题栏要改样式,你岂不是要去三四个地方分别改动。
为了解决这个问题,android中有了include和merge标记

以下为标题栏的layout文件titlebar.xml 我们将使用Include标记重用这个文件
<FrameLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width=”match_parent”
android:layout_height="wrap_content"
android:background="@color/titlebar_bg">
<ImageView android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:src="@drawable/gafricalogo" />
</FrameLayout>
那么在那三四个activity中你可以适用Include标记
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:orientation="vertical"
android:layout_width=”match_parent”
android:layout_height=”match_parent”
android:gravity="center_horizontal">
<include layout="@layout/titlebar"/>
<TextView android:layout_width=”match_parent”
android:layout_height="wrap_content"
android:text="@string/hello" />
...
</LinearLayout>
调用了Include之后,titlebar文件的内容就被完全嵌入到了include所指定的位置。而且你还可以在include中重新更改一些属性的值,比如
<include android:id=”@+id/news_title”
android:layout_width=”match_parent”
android:layout_height=”match_parent”
layout="@layout/title"/>
原来layout中的wrap_content属性就被改成了match_parent属性

再来说一下merge标记
上面的include有一个副作用就是他多套了一层root节点FrameLayout ,使得再构图的时候会多花费一点时间
如果你不能容忍这个的话那你可以试一下merge标记
titlebar2.xml
<merge xmlns:android="http://schemas.android.com/apk/res/android">
<ImageView android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:src="@drawable/gafricalogo" />
</merge>
这样行成的titlebar2文件就少了外层的root节点,merge标记可以直接成为root节点,当titlebar2被include到文件中时,merge标记就会被忽略掉,而直接由里面的ImageView取代原来include的位置。避免了冗余的layout。

所以include和merge是配合使用的,不是一个互斥的或者说是平级的关系。

再来说一个在使用这两个标签时最容易出现的问题。
经常会有同学在RelativeLayout中使用include标签
但是却发现include进来的控件无法用layout_alignParentBottom="true"之类的标签来调整。这个真的非常恼火。其实解决方法非常简单,只要你在include的时候同时重载下layout_width和layout_height这两个标签就可以了。如果不重载,任何针对include的layout调整都是无效的!

⑥ android 多个页面怎么共用同一组件

自定义组件就行。如果觉得还不好就创建一个mole。

关于自定义组件的实例,请参考android学习手册,android学习手册包含9个章节,108个例子,源码文档随便看,例子都是可交互,可运行,源码采用android studio目录结构,高亮显示代码,文档都采用文档结构图显示,可以快速定位。360手机助手中下载,图标上有贝壳

.多个Activity共用相同布局或者相同控件:避免重复代码;

BaseActivit代码:

{

/*

* 多个Activity共用相同布局或者相同控件

* 写个基类继承,避免重复代码

*/

@Override

publicvoidonClick(View v)

{

switch(v.getId())

{

caseR.id.common_titlebar_btn_back:

finish();

break;

default:

break;

}

baseOnClick(v);

}

protectedvoidbaseOnClick(View v)

{

}

@Override

protectedvoidonCreate(Bundle savedInstanceState)

{

super.onCreate(savedInstanceState);

// setContentView(R.layout.activity_base);

}

@Override

protectedvoidonResume()

{

super.onResume();

onPostOnCreate();

}

publicfinalvoidonPostOnCreate()//find同一个控件

{

findViewById(R.id.common_titlebar_btn_back).setOnClickListener(this);

}

@Override

(Menu menu)

{

getMenuInflater().inflate(R.menu.base, menu);

returntrue;

}

}


子类代码:


{

/**

* layout里复用同一布局:

* < include

* android:id="@+id/include1"

* layout="@layout/common_titlebar" />

*/

@Override

protectedvoidonCreate(Bundle savedInstanceState)

{

super.onCreate(savedInstanceState);

setContentView(R.layout.activity_third_main);

}

}

⑦ Android开发问题怎么解决

  1. R.java消失或解析异常

  2. 自定义title栏

  3. SQLite isFirst和isBeforeFirst方法的区别

  4. eclipse删除空行

  5. getX()和getRawX()的区别

  6. imagView居中显示问题

  7. synchronized引发了 java.util.

  8. 获取随机颜色

  9. 去掉Activity的标题栏,全屏显示

  10. 如何修改应用名称及应用图标

  11. 关于调试方法

  12. Couldn't read row 0, col -1 from CursorWindow. Make sure the Cursor is initialized correctly before accessing data from it.

  13. android.content.res.Resources.loadXmlResourceParser

  14. android.content.res.Resources$NotFoundException

  15. 交互性的button定义的方法

  16. 在超级终端中执行程序报错-Permission deny

  17. 从svn导入工程项目有惊叹号

  18. 从svn导入工程项目有惊叹号

  19. 首次进入带有EditText的Activity不自动弹出软键盘,再次点击才弹

  20. Gallery中OnItemClickListener与OnItemSelectedListener的区别

  21. Eclipse中签名导出apk崩溃,手动签名

  22. android.view.InflateException: Binary XML file line #异常的解决

  23. 将assets文件夹中的压缩包拷贝到sdcard中(不限大小)

  24. 判断是否有root权限

  25. 最简单的Root 模拟器的方法

  26. 新版ADT开启eclipse提示 "Running Android Lint" has encountered a problem

  27. 新版ADT开启eclipse提示cannot open libstdc++.so.6..

  28. 无法升级ADT

热点内容
javaurl的正则表达式 发布:2024-11-24 15:53:45 浏览:245
c语言只可以执行编译文件 发布:2024-11-24 15:53:33 浏览:756
126邮件服务器地址 发布:2024-11-24 15:52:46 浏览:214
微信80安卓什么时候更新动态 发布:2024-11-24 15:40:54 浏览:480
破天窝窝脚本 发布:2024-11-24 15:40:53 浏览:112
王者荣耀苹果转安卓怎么转的 发布:2024-11-24 15:40:49 浏览:677
取消win10开机密码怎么设置 发布:2024-11-24 15:26:03 浏览:796
编译原理for循环三地址码 发布:2024-11-24 15:16:44 浏览:201
php2048 发布:2024-11-24 15:14:49 浏览:894
php旋转图片 发布:2024-11-24 15:03:48 浏览:534