[android] 标题部分管理详解手机开发

  1. 标题分类

1.1 普通标题

1.1.1 标题内容管理

1.1.2 帮助和返回的按钮

1.2 未登录的标题

 

1.3 登陆中的标题

1.4 登陆完成后的标题

package com.tsh.lottery.view.manager; 
 
import com.tsh.lottery.R; 
 
import android.app.Activity; 
import android.view.View; 
import android.widget.RelativeLayout; 
/** 
 * 标题管理 
 * @author taoshihan 
 * 
 */ 
public class TitleManager { 
    private RelativeLayout generalTitle,unloginTitle,loginTitle; 
    private static TitleManager instance=new TitleManager(); 
    private TitleManager(){} 
    public static TitleManager getInstance(){ 
        return instance; 
    } 
    /** 
     * 初始化标题 
     * @param activity 
     */ 
    public void init(Activity activity){ 
        generalTitle=(RelativeLayout) activity.findViewById(R.id.title_general); 
        loginTitle=(RelativeLayout) activity.findViewById(R.id.title_login); 
        unloginTitle=(RelativeLayout) activity.findViewById(R.id.title_unlogin); 
    } 
    /** 
     * 隐藏所有标题 
     */ 
    public void hideTitle(){ 
        generalTitle.setVisibility(View.GONE); 
        unloginTitle.setVisibility(View.GONE); 
        loginTitle.setVisibility(View.GONE); 
    } 
    /** 
     * 显示通用的标题 
     */ 
    public void showGeneralTitle() { 
        hideTitle(); 
        generalTitle.setVisibility(View.VISIBLE); 
    } 
    /** 
     * 显示未登录的标题 
     */ 
    public void showUnloginTitle() { 
        hideTitle(); 
        unloginTitle.setVisibility(View.VISIBLE); 
    } 
    /** 
     * 显示已经登陆的标题 
     */ 
    public void showLoginTitle() { 
        hideTitle(); 
        loginTitle.setVisibility(View.VISIBLE); 
    } 
}

 

 

  1. 使用ActionBar

2.1 清单文本配置

2.2 新建menu资源文件

2.3 Activity中设置

 

清单文件:

设置主题是Theme.Holo下面的就可以

<application  android:theme=”@android:style/Theme.Holo.Light” >

 

菜单文件:

item里面的showAsAction属性必须填,例如:always是总是显示的意思,never不显示

actionViewClass 属性,可以设置View控件,例如:android.widget.SearchView 是显示搜索

 

解决overflow的按钮不可见问题:

当存在物理menu键的时候,会出现这个问题,只有按物理menu键,隐藏的按钮从下面出来

使用反射修改ViewConfiguration类的sHasPermanentMenuKey静态变量

 

    /** 
     * 添加菜单 
     */ 
    @Override 
    public boolean onCreateOptionsMenu(Menu menu) { 
        MenuInflater inflater=getMenuInflater(); 
        inflater.inflate(R.menu.menu, menu); 
        return super.onCreateOptionsMenu(menu); 
    } 
    /** 
     * 解决ActionBar的问题 
     */ 
    public void setOverflowMenuQues(){ 
        ViewConfiguration viewConfiguration=ViewConfiguration.get(this); 
        try { 
            Field field=ViewConfiguration.class.getDeclaredField("sHasPermanentMenuKey"); 
            field.setAccessible(true); 
            field.setBoolean(viewConfiguration, false); 
        } catch (Exception e) { 
            e.printStackTrace(); 
        } 
    }
<?xml version="1.0" encoding="utf-8"?> 
<menu xmlns:android="http://schemas.android.com/apk/res/android" > 
 
    <item 
        android:id="@+id/menu_search" 
        android:actionViewClass="android.widget.SearchView" 
        android:showAsAction="always" 
        android:title="搜索"/> 
    <item 
        android:showAsAction="always" 
        android:id="@+id/menu_user" 
        android:title="用户"/> 
    <item 
        android:showAsAction="never" 
        android:id="@+id/menu_cart" 
        android:title="购物"/> 
    <item 
        android:showAsAction="always" 
        android:id="@+id/menu_edit" 
        android:title="编辑"/> 
    <item 
        android:showAsAction="never" 
        android:id="@+id/menu_setting" 
        android:title="设置"/> 
 
</menu>

[android] 标题部分管理详解手机开发

 

原创文章,作者:奋斗,如若转载,请注明出处:https://blog.ytso.com/tech/app/5388.html

(0)
上一篇 2021年7月16日 23:47
下一篇 2021年7月16日 23:47

相关推荐

发表回复

登录后才能评论