为什么我的人头像右上角有个1没有三个点的功

Android中ActionBar中不显示overflow(就是三个点的那个按钮)
Android中ActionBar中不显示overflow(就是三个点的那个按钮)
[摘要:【题目】 合腾: 【纪录】继承实验给Android顺序的左上角的ActionBar中增加三个面的选项按钮 时代,已依照民网的教程: Action Bar | Android Developers 往增加代码,增添menu,然后表现正在A]
【记录】继续尝试给Android程序的右上角的ActionBar中添加三个点的选项按钮
期间,已经按照官网的教程:
Bar | Android Developers
去添加代码,增加menu,然后显示在ActionBar中了。
但是遇到的问题是:
对于menu的item,没有指定android:showAsAction为ifRoom的话,结果对于:
PAD来说,也还是会直接显示在ActionBar上面,而没有出现所希望出现的overflow按钮,即三个点的那个按钮;
并且,对于手机来说,由于ActionBar的空间有限,结果:
始终都显示不出来对应的menu了。。。
现在希望:
当没有指定android:showAsAction为ifRoom的时候:
可以让overflow显示出来
并且对于手机来说,也应该显示出来。
【解决过程】
android actionbar not show overflow
action bar not showing overflow – Stack Overflow
但是别人都说那种错误不太好,所以暂时不用。
– Overflow Actions on ActionBar not showing – Stack Overflow
如果设备有物理上的Menu键,则overflow按钮就不会显示,这个是本身android的设计就这么定的。
3.所以去看看其给的链接:
to force overflow menu on android actionbar compat? – Stack Overflow
但是其所给出的官网链接,就是我前面看的:
Bar | Android Developers
但我是没看到有这种说法啊。。。
4.再参考:
– How to force action bar overflow icon to show – Stack Overflow
其解释的相对比较清楚。
然后对于讨论:
63377 – android – Eliminate sHasPermanentMenuKey, Or Better Support The … Overflow Affordance – Android Open Source Project – Issue Tracker – Google Project Hosting
中,也说的很清楚。
我个人意见是:
很明显,不应该依赖于物理上是否有MENU键,而决定是否显示三个点的按钮。
而应该是:
无论是否有物理按键,结果都显示三个点的overflow按钮。
然后看到评论里面的人,也是和我同样的观点。
但是反过来可以看出:
google那帮定UI的人,对于是否始终显示overflow按钮这点,不知道怎么想的
这么明显的UI的逻辑,竟然被其搞得这么复杂。。。。
哎,看来还是定规矩的人,考虑实在不周啊。。。
稍微动点脑子,都可以想到:
如果是否显示overflow需要依赖物理MENU按键的话,那么:
搞得有物理MENU和没物理MENU的手机,UI逻辑就不一致
并且有物理MENU键的手机,需要额外按一次MENU键,才能看到更多的菜单-&明显很麻烦。
并且也侧面地鼓励android手机生厂商,需要去多弄个MENU键-&增加物理成本
5.算了,不吐槽了。
去试试那个,hack的,强制出现overflow的代码:
public&class&MainActivity
&&&&@Override
&&&&protected&void&onCreate(Bundle
savedInstanceState) {
&&&&&&&&...
&&&&&&&&getOverflowMenu();
&&&&private&void&getOverflowMenu()
&&&&&&&&&try&{
&&&&&&&&&&&&ViewConfiguration
config = ViewConfiguration.get(this);
&&&&&&&&&&&&Field
menuKeyField = ViewConfiguration.class.getDeclaredField(&sHasPermanentMenuKey&);
&&&&&&&&&&&&if(menuKeyField
&&&&&&&&&&&&&&&&menuKeyField.setAccessible(true);
&&&&&&&&&&&&&&&&menuKeyField.setBoolean(config,&false);
&&&&&&&&&&&&}
&&&&&&&&}&catch&(Exception
&&&&&&&&&&&&e.printStackTrace();
结果在4.2.2的PAD上,还是无法显示出来overflow。
6.换个4.1.2的手机试试,然后是可以显示出来overflow的:
所以现在结果是:
对于ActionBar空间够大的PAD来说,即使加了上述代码,但是对于用了ifRoom的话,也还是无法强制显示出来overflow的。
7.那再去试试,对于:
&menuxmlns:android=&/apk/res/android&&&
&&&&&&&&android:id=&@+id/menu_discard&
&&&&&&&&android:icon=&@drawable/error_white&
&&&&&&&&android:orderInCategory=&1&
&&&&&&&&android:showAsAction=&ifRoom|withText&
&&&&&&&&android:title=&@string/discard&/&
&&&&&&&&android:id=&@+id/menu_send&
&&&&&&&&android:icon=&@drawable/forward_white&
&&&&&&&&android:orderInCategory=&2&
&&&&&&&&android:showAsAction=&ifRoom|withText&
&&&&&&&&android:title=&@string/send&/&
&&&&&&&&android:id=&@+id/menu_settings&
&&&&&&&&android:icon=&@drawable/settings&
&&&&&&&&android:orderInCategory=&3&
&&&&&&&&android:showAsAction=&withText&
&&&&&&&&android:title=&@string/settings&/&
以及加了getOverflowMenu,在PAD上效果:
然后是可以显示出来对应的overflow的:
8.另外,对于之前:
– How to force action bar overflow icon to show – Stack Overflow
的讨论,看起来:
对于上述的hack的代码getOverflowMenu来说,即使是用于更新的4.4.的android中,应该也是无害的:
因为如果得到的menuKeyField为null的话,啥都不做,所以也是没啥副作用的。
此处倒是想去测试android 4.4的效果的,但是由于即没有4.4的实际设备,也没有4.4的支持x86加速的AVD虚拟机,所以就不去测试了。
1.Android中的ActionBar中的那三个点的按钮,专业名字叫做:overflow button或overflow menu
2.overflow在新的Android 3.0+的系统中,默认是不显示的:
对于很多PAD来说:ActionBar中空间足够显示的话,那么对应各个menu菜单,都直接显示在ActionBar中;
对于很多手机来说:ActionBar中没有足够的控件显示所有的菜单的话,余下的菜单,就被藏起来了-&只有有物理菜单(MENU)键的Android设备,点击MENU键,才能出现多余的菜单;
3.想要让overflow始终都显示的话:
先去添加别的高手破解后强制overflow显示的那段代码getOverflowMenu,加到Activity的onCreate中:
public&class&XxxActivity{
&&&&@Override
&&&&protected&void&onCreate(Bundle
savedInstanceState) {
&&&&&&&&...
&&&&&&&&getOverflowMenu();
&&&&private&void&getOverflowMenu()
&&&&&&&&&try&{
&&&&&&&&&&&&ViewConfiguration
config = ViewConfiguration.get(this);
&&&&&&&&&&&&Field
menuKeyField = ViewConfiguration.class.getDeclaredField(&sHasPermanentMenuKey&);
&&&&&&&&&&&&if(menuKeyField
&&&&&&&&&&&&&&&&menuKeyField.setAccessible(true);
&&&&&&&&&&&&&&&&menuKeyField.setBoolean(config,&false);
&&&&&&&&&&&&}
&&&&&&&&}&catch&(Exception
&&&&&&&&&&&&e.printStackTrace();
然后接下来,要根据ActionBar是否有足够空间显示所有menu菜单,来决定menu的android:showAsAction是否添加ifRoom:
对于很多PAD来说:ActionBar中空间足够显示的话,那么对应的menu菜单,只有不设置为ifRoom,然后才可以被放到overflow中:
&menuxmlns:android=&/apk/res/android&&
&&&&&&&&android:id=&@+id/menu_discard&
&&&&&&&&android:icon=&@drawable/error_white&
&&&&&&&&android:orderInCategory=&1&
&&&&&&&&android:showAsAction=&ifRoom|withText&
&&&&&&&&android:title=&@string/discard&/&
&&&&&&&&android:id=&@+id/menu_send&
&&&&&&&&android:icon=&@drawable/forward_white&
&&&&&&&&android:orderInCategory=&2&
&&&&&&&&android:showAsAction=&ifRoom|withText&
&&&&&&&&android:title=&@string/send&/&
&&&&&&&&android:id=&@+id/menu_settings&
&&&&&&&&android:icon=&@drawable/settings&
&&&&&&&&android:orderInCategory=&3&
&&&&&&&&android:showAsAction=&withText&
&&&&&&&&android:title=&@string/settings&/&
对于menu_settings是可以被放到overflow按钮中的。
对于很多手机来说:ActionBar中没有足够的空间显示所有的菜单的话,即使是设置了ifRoom,很多菜单本来也也还是无法全部显示,所以:即使设置了ifRoom的menu的item,以及没有设置ifRoom的menu的item,都会被放到overflow中的
&menuxmlns:android=&/apk/res/android&&&
&&&&&&&&android:id=&@+id/menu_discard&
&&&&&&&&android:icon=&@drawable/error_white&
&&&&&&&&android:orderInCategory=&1&
&&&&&&&&android:showAsAction=&ifRoom|withText&
&&&&&&&&android:title=&@string/discard&/&
&&&&&&&&android:id=&@+id/menu_send&
&&&&&&&&android:icon=&@drawable/forward_white&
&&&&&&&&android:orderInCategory=&2&
&&&&&&&&android:showAsAction=&ifRoom|withText&
&&&&&&&&android:title=&@string/send&/&
&&&&&&&&android:id=&@+id/menu_settings&
&&&&&&&&android:icon=&@drawable/settings&
&&&&&&&&android:orderInCategory=&3&
&&&&&&&&android:showAsAction=&withText&
&&&&&&&&android:title=&@string/settings&/&
如果手机宽度不多,只能显示一个菜单按钮的话,那么ActionBar中只显示menu_discard,余下的,虽然已经设置了ifRoom的menu_send,和没有设置ifRoom的menu_settings,都会被放到overflow中。
Android ActionBar详解---使用ActionBar显示选项菜单
MainActivity如下:
package cc.testsimpleactionbar1;
import android.os.B import android.app.A import android.graphics.C import android.view.M import android.view.MenuI import android.widget.TextV import android.widget.T /**
* Demo描述:
* 使用ActionBar显示选项菜单
* 背景资料:
* Android手机不强制要求设备必须有Menu键,这样导致的问题是用户无法打开
* 选项菜单.但此时即可以将选项菜单设置成Action Item.
* 即从Android 3.0 开始为MenuItem新增如下方法:
* setShowAsAction(int actionEnum),该方法用于设置是否将该菜单栏
* 显示在ActionBar上,作为ActionItem
* 参数值如下:
* SHOW_AS_ACTION_ALWAYS:总是将该MenuItem显示在ActionBar上
* SHOW_AS_ACTION_COLLAPSE_ACTION_VIEW:将该Action View折叠成普通菜单项
* SHOW_AS_ACTION_IF_ROOM:当ActionBar位置有足够空间时才显示该MenuItem
* SHOW_AS_ACTION_NEVER:不将该MenuItem显示在ActionBar上
* SHOW_AS_ACTION_WITH_TEXT:将该MenuItem显示在ActionBar上,且显示该菜单项的文本
* 当然我们最好是在xml文件中来定义菜单.
* 所以在menu下的item属性中指定showAsAction属性即可
* 该属性的值和上面提到的参数值的表达形式很类似,作用是相同的
* 参考资料:
* 1 Android疯狂讲义(第二版)
* 2 http://blog.csdn.net/think_soft/article/details/7378824
Thank you very much
* 测试说明:
* 当手机处于横屏的时候,在因为ActionBar的空间有限
* 所以只会显示每个Item的图标,不会显示其title
* 在横屏的时候既显示图标也显示title
*/ public class MainActivity extends Activity {
private TextView mTipTextV
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
private void init(){
mTipTextView=(TextView) findViewById(R.id.tipTextView);
//生成对应的菜单,并添加到Menu中
public boolean onCreateOptionsMenu(Menu menu) {
getMenuInflater().inflate(R.menu.action_menu, menu);
//菜单项被选中时执行该方法
public boolean onOptionsItemSelected(MenuItem menuItem) {
if (menuItem.isCheckable()) {
menuItem.setChecked(true);
switch (menuItem.getItemId()) {
case R.id.font10:
mTipTextView.setTextSize(10 * 2);
case R.id.font12:
mTipTextView.setTextSize(12 * 2);
case R.id.font14:
mTipTextView.setTextSize(14 * 2);
case R.id.font16:
mTipTextView.setTextSize(16 * 2);
case R.id.font18:
mTipTextView.setTextSize(18 * 2);
case R.id.redFont:
mTipTextView.setTextColor(Color.RED);
case R.id.greenFont:
mTipTextView.setTextColor(Color.GREEN);
case R.id.blueFont:
mTipTextView.setTextColor(Color.BLUE);
case R.id.plain_item:
Toast toast = Toast.makeText(MainActivity.this, &单击了普通菜单项&,Toast.LENGTH_SHORT);
toast.show();
main.xml如下:
&RelativeLayout xmlns:android=&/apk/res/android&
xmlns:tools=&/tools&
android:layout_width=&match_parent&
android:layout_height=&match_parent& &
android:id=&@+id/tipTextView&
android:layout_width=&fill_parent&
android:layout_height=&wrap_content&
android:layout_centerInParent=&true&
android:text=&可通过菜单修改文字的大小和颜色&
android:textSize=&16sp&
android:gravity=&center&
&/RelativeLayout&
action_menu.xml如下:
&menu xmlns:android=&/apk/res/android& &
android:title=&文字大小&
android:icon=&@drawable/font&
android:showAsAction=&always|withText&&
&group android:checkableBehavior=&single&&
android:id=&@+id/font10&
android:title=&10&
android:id=&@+id/font12&
android:title=&12&
android:id=&@+id/font14&
android:title=&14&
android:id=&@+id/font16&
android:title=&16&
android:id=&@+id/font18&
android:title=&18&
android:id=&@+id/plain_item&
android:icon=&@drawable/ic_launcher&
android:title=&普通菜单项&
android:showAsAction=&always|withText&
android:title=&设置颜色&
android:icon=&@drawable/color&
android:showAsAction=&always|withText&&
android:id=&@+id/redFont&
android:title=&红色&
android:id=&@+id/greenFont&
android:title=&绿色&
android:id=&@+id/blueFont&
android:title=&蓝色&
感谢关注 Ithao123Android频道,是专门为互联网人打造的学习交流平台,全面满足互联网人工作与学习需求,更多互联网资讯尽在 IThao123!
Laravel是一套简洁、优雅的PHP Web开发框架(PHP Web Framework)。它可以让你从面条一样杂乱的代码中解脱出来;它可以帮你构建一个完美的网络APP,而且每行代码都可以简洁、富于表达力。
Hadoop是一个由Apache基金会所开发的分布式系统基础架构。
用户可以在不了解分布式底层细节的情况下,开发分布式程序。充分利用集群的威力进行高速运算和存储。
Hadoop实现了一个分布式文件系统(Hadoop Distributed File System),简称HDFS。HDFS有高容错性的特点,并且设计用来部署在低廉的(low-cost)硬件上;而且它提供高吞吐量(high throughput)来访问应用程序的数据,适合那些有着超大数据集(large data set)的应用程序。HDFS放宽了(relax)POSIX的要求,可以以流的形式访问(streaming access)文件系统中的数据。
Hadoop的框架最核心的设计就是:HDFS和MapReduce。HDFS为海量的数据提供了存储,则MapReduce为海量的数据提供了计算。
产品设计是互联网产品经理的核心能力,一个好的产品经理一定在产品设计方面有扎实的功底,本专题将从互联网产品设计的几个方面谈谈产品设计
随着国内互联网的发展,产品经理岗位需求大幅增加,在国内,从事产品工作的大部分岗位为产品经理,其实现实中,很多从事产品工作的岗位是不能称为产品经理,主要原因是对产品经理的职责不明确,那产品经理的职责有哪些,本专题将详细介绍产品经理的主要职责
IThao123周刊我一个微信的朋友,我们两个人能发信息,但我看不到她个人相册一栏了,请问他对我设置了什么功能啊,_百度知道
我一个微信的朋友,我们两个人能发信息,但我看不到她个人相册一栏了,请问他对我设置了什么功能啊,
再点击右上角三个点,选择“设置朋友圈权限”就可以设置了。说了这么多,点开朋友的头像,也可以设置不看对方的朋友圈,望采纳啊。这个设置步骤是,“不让对方看我的朋友圈”她肯定是设置了,在这里你可以设置不让对方看你的朋友圈
其他类似问题
为您推荐:
等待您来回答
下载知道APP
随时随地咨询
出门在外也不愁微信删人怎么把我从对方列表消失?_百度知道
微信删人怎么把我从对方列表消失?
我有更好的答案
你好,拉黑就可以了。具体操作是点来人的头像,就是可以看别人资料的那里,然后点右上角三个点,弹出的界面里选择加入黑名单就可以了
对方列表照样有
好友列表不会有
有你嘛个毕
你只能在你这边把他删除, 对方那边会有你的信息,但是无法和你聊天!
可是我不想我的头像跟资料在他列表
明白,目前不能解决这个问题!
这个只能他来删
其他类似问题
为您推荐:
等待您来回答
下载知道APP
随时随地咨询
出门在外也不愁为什么打开微信右上角没有三束点,不能更头像,要下载什么软件才有三束点…_百度知道
为什么打开微信右上角没有三束点,不能更头像,要下载什么软件才有三束点…
更换头像的话
你登陆微信——找到我分类——点击头像——进入个人信息页面。点击“头像”2字,而不是点击头像图片,点击进去之后就可以更换你想要的图片了微盟
其他类似问题
为您推荐:
等待您来回答
下载知道APP
随时随地咨询
出门在外也不愁}

我要回帖

更多关于 谷歌浏览器右上角头像 的文章

更多推荐

版权声明:文章内容来源于网络,版权归原作者所有,如有侵权请点击这里与我们联系,我们将及时删除。

点击添加站长微信