可重用的UI开发框架

通常我们的应用界面会有如下图所示要素:主标题栏(上,主要为返回键和最常用操作按钮),内容栏(中,呈现给用户的主要界面),副票题栏(下,重要性和使用频率相对较低的操作),有了这些基础元素再辅以合理的隐藏或修改机制等,一个通用的UI开发框架就基本成形了。

为了可重用,我们可以自定义活动类型,继承自android.support.v4.app.FragmentActivity,重写相关方法,实现按需手动布局

主要代码如下:

// TODO: Auto-generated Javadoc
/**
 * © 2015 lyyj.com
 * 名称:AfActivity.java 
 * 描述:继承这个Activity使你的Activity拥有一个程序框架.
 *
 * @author kaka
 * @version v1.0
 * 
 */

public abstract class AfActivity extends FragmentActivity {


/** 全局的LayoutInflater对象,已经完成初始化. */
public LayoutInflater mInflater;

/** 全局的Application对象,已经完成初始化. */
public Application mAfApplication = null;

/** 总布局. */
public RelativeLayout mAfBaseLayout = null;

/** 标题栏布局. */
private AfTitleBar mAfTitleBar = null;

/** 副标题栏布局. */
private AfBottomBar mAfBottomBar = null;

/** 主内容布局. */
protected RelativeLayout mContentLayout = null;

/**
* 描述:创建.
*
* @param savedInstanceState the saved instance state
* @see android.support.v4.app.FragmentActivity#onCreate(android.os.Bundle)
*/
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
requestWindowFeature(Window.FEATURE_NO_TITLE);
mInflater = LayoutInflater.from(this);

//主标题栏
mAfTitleBar = new AfTitleBar(this);

//最外层布局
mAfBaseLayout = new RelativeLayout(this);
mAfBaseLayout.setBackgroundColor(Color.rgb(255, 255, 255));

//内容布局
mContentLayout = new RelativeLayout(this);
mContentLayout.setPadding(0, 0, 0, 0);

//副标题栏
mAfBottomBar = new AfBottomBar(this);

        //填入View
mAfBaseLayout.addView(mAfTitleBar,new LinearLayout.LayoutParams(LayoutParams.MATCH_PARENT, LayoutParams.WRAP_CONTENT));

mAfTitleBar.setVisibility(View.GONE);

RelativeLayout.LayoutParams layoutParamsBottomBar = new RelativeLayout.LayoutParams(ViewGroup.LayoutParams.FILL_PARENT, ViewGroup.LayoutParams.WRAP_CONTENT);
layoutParamsBottomBar.addRule(RelativeLayout.ALIGN_PARENT_BOTTOM, RelativeLayout.TRUE);
mAfBaseLayout.addView(mAfBottomBar, layoutParamsBottomBar);

RelativeLayout.LayoutParams layoutParamsContent = new RelativeLayout.LayoutParams(ViewGroup.LayoutParams.FILL_PARENT, ViewGroup.LayoutParams.WRAP_CONTENT);
layoutParamsContent.addRule(RelativeLayout.BELOW, mAfTitleBar.getId());
layoutParamsContent.addRule(RelativeLayout.ABOVE, mAfBottomBar.getId());
mAfBaseLayout.addView(mContentLayout, layoutParamsContent);

//Application初始化
mAfApplication = getApplication();

//设置ContentView
        setContentView(mAfBaseLayout,new LinearLayout.LayoutParams(LayoutParams.MATCH_PARENT, LayoutParams.MATCH_PARENT));
        
        AfActivityManager.getInstance().addActivity(this);
}

/**
* 描述:用指定的View填充主界面.
* @param contentView  指定的View
*/
public void setAfContentView(View contentView){
mContentLayout.removeAllViews();
mContentLayout.addView(contentView,new LinearLayout.LayoutParams(LayoutParams.MATCH_PARENT, LayoutParams.MATCH_PARENT));
。。。。
}

/**
* 描述:用指定资源ID表示的View填充主界面.
* @param resId  指定的View的资源ID
*/
public void setAfContentView(int resId) {
setAfContentView(mInflater.inflate(resId, null));
}

/**
* 获取主标题栏布局.
* @return the title layout
*/
public AfTitleBar getTitleBar() {
mAfTitleBar.setVisibility(View.VISIBLE);
return mAfTitleBar;
}

/**
* 获取副标题栏布局.
* @return the bottom layout
*/
public AfBottomBar getBottomBar() {
return mAfBottomBar;
}

/**
* 设置主标题栏高度.
* @param height LayoutParams属性  和具体的大小px
*/
public void setTitleBarHeight(int height) {
ViewGroup.LayoutParams params = mAfTitleBar.getLayoutParams();
params.height = height;
   mAfTitleBar.setLayoutParams(params);
}




/**
* 描述:设置绝对定位的主标题栏覆盖到内容的上边.
*
* @param overlay the new title bar overlay
*/
public void setTitleBarOverlay(boolean overlay) {
mAfBaseLayout.removeAllViews();
if(overlay){
RelativeLayout.LayoutParams layoutParamsFW1 = new RelativeLayout.LayoutParams(ViewGroup.LayoutParams.MATCH_PARENT, ViewGroup.LayoutParams.WRAP_CONTENT);
layoutParamsFW1.addRule(RelativeLayout.ABOVE, mAfBottomBar.getId());
mAfBaseLayout.addView(mContentLayout,layoutParamsFW1);
RelativeLayout.LayoutParams layoutParamsFW2 = new RelativeLayout.LayoutParams(ViewGroup.LayoutParams.MATCH_PARENT, ViewGroup.LayoutParams.WRAP_CONTENT);
layoutParamsFW2.addRule(RelativeLayout.ALIGN_PARENT_TOP,RelativeLayout.TRUE);
mAfBaseLayout.addView(mAfTitleBar,layoutParamsFW2);

RelativeLayout.LayoutParams layoutParamsFW3 = new RelativeLayout.LayoutParams(ViewGroup.LayoutParams.MATCH_PARENT, ViewGroup.LayoutParams.WRAP_CONTENT);
layoutParamsFW3.addRule(RelativeLayout.ALIGN_PARENT_BOTTOM, RelativeLayout.TRUE);
mAfBaseLayout.addView(mAfBottomBar, layoutParamsFW3);

}else{
mAfBaseLayout.addView(mAfTitleBar,new LinearLayout.LayoutParams(LayoutParams.MATCH_PARENT, LayoutParams.WRAP_CONTENT));

RelativeLayout.LayoutParams layoutParamsFW2 = new RelativeLayout.LayoutParams(ViewGroup.LayoutParams.MATCH_PARENT, ViewGroup.LayoutParams.WRAP_CONTENT);
layoutParamsFW2.addRule(RelativeLayout.ALIGN_PARENT_BOTTOM, RelativeLayout.TRUE);
mAfBaseLayout.addView(mAfBottomBar, layoutParamsFW2);

RelativeLayout.LayoutParams layoutParamsFW1 = new RelativeLayout.LayoutParams(ViewGroup.LayoutParams.MATCH_PARENT, ViewGroup.LayoutParams.WRAP_CONTENT);
layoutParamsFW1.addRule(RelativeLayout.BELOW, mAfTitleBar.getId());
layoutParamsFW1.addRule(RelativeLayout.ABOVE, mAfBottomBar.getId());
mAfBaseLayout.addView(mContentLayout, layoutParamsFW1);
}
}

/**
* 描述:设置界面显示(忽略标题栏).
*
* @param layoutResID the new content view
* @see android.app.Activity#setContentView(int)
*/
@Override
public void setContentView(int layoutResID) {
super.setContentView(layoutResID);

}


/**
* 描述:设置界面显示(忽略标题栏).
*
* @param view the view
* @param params the params
* @see android.app.Activity#setContentView(android.view.View, android.view.ViewGroup.LayoutParams)
*/
@Override
public void setContentView(View view,
android.view.ViewGroup.LayoutParams params) {
super.setContentView(view, params);
}


/**
* 描述:设置界面显示(忽略标题栏).
*
* @param view the new content view
* @see android.app.Activity#setContentView(android.view.View)
*/
public void setContentView(View view) {
super.setContentView(view);
}

/**
* 标题上的返回按钮
* @param view
*/
public void back(View view){
finish();
}

/**
* 描述:Activity结束.
*
* @see android.app.Activity#finish()
*/
@Override
public void finish() {
super.finish();
}


主标题栏实现,主要是继承LinearLayout,然后根据相关标志定制修改布局,主要代码如下:

/**
 * © 2015 lyyj.com
 * 名称:AfBottomBar.java 
 * 描述:标题栏实现.
 *
 * @author kaka
 * @version v1.0
 * 
 */
public class AfTitleBar extends LinearLayout {

/** The m context. */
private Activity mActivity;

/** 标题布局. */
protected LinearLayout titleTextLayout = null;

/** 显示标题文字的View. */
protected Button titleTextBtn = null;

/** 显示标题文字的小View. */
protected Button titleSmallTextBtn = null;

/** 左侧的Logo图标View. */
protected ImageView logoView = null;

/** 左侧的Logo图标View. */
protected ImageView logoView2 = null;

/** 左侧的Logo图标右边的分割线View. */
protected ImageView logoLineView = null;

/** 标题文本的对齐参数. */
private LinearLayout.LayoutParams titleTextLayoutParams = null;

/** 右边布局的的对齐参数. */
private LinearLayout.LayoutParams rightViewLayoutParams = null;

/** 右边的View,可以自定义显示什么. */
protected LinearLayout rightLayout = null;

/** 标题栏布局ID. */
public int mAbTitleBarID = 1;

/** 全局的LayoutInflater对象,已经完成初始化. */
public LayoutInflater mInflater;

/**
* LinearLayout.LayoutParams,已经初始化为FILL_PARENT, FILL_PARENT
*/
public LinearLayout.LayoutParams layoutParamsFF = null;

/**
* LinearLayout.LayoutParams,已经初始化为FILL_PARENT, WRAP_CONTENT
*/
public LinearLayout.LayoutParams layoutParamsFW = null;

/**
* LinearLayout.LayoutParams,已经初始化为WRAP_CONTENT, FILL_PARENT
*/
public LinearLayout.LayoutParams layoutParamsWF = null;

/**
* LinearLayout.LayoutParams,已经初始化为WRAP_CONTENT, WRAP_CONTENT
*/
public LinearLayout.LayoutParams layoutParamsWW = null;

/** 下拉选择. */
private PopupWindow popupWindow;


/**
* Instantiates a new ab title bar.
*
* @param context the context
* @param attrs the attrs
*/
public AfTitleBar(Context context, AttributeSet attrs) {
super(context, attrs);
ininTitleBar(context);
}


/**
* Instantiates a new ab title bar.
*
* @param context the context
*/
public AfTitleBar(Context context) {
super(context);
ininTitleBar(context);

}

/**
* Inin title bar.
*
* @param context the context
*/
public void ininTitleBar(Context context){

mActivity  = (Activity)context;
//水平排列
this.setOrientation(LinearLayout.HORIZONTAL);
this.setId(mAbTitleBarID);

mInflater = LayoutInflater.from(context);

layoutParamsFF = new LinearLayout.LayoutParams(LayoutParams.MATCH_PARENT, LayoutParams.MATCH_PARENT);
layoutParamsFW = new LinearLayout.LayoutParams(LayoutParams.MATCH_PARENT, LayoutParams.WRAP_CONTENT);
layoutParamsWF = new LinearLayout.LayoutParams(LayoutParams.WRAP_CONTENT, LayoutParams.MATCH_PARENT);
layoutParamsWW = new LinearLayout.LayoutParams(LayoutParams.WRAP_CONTENT, LayoutParams.WRAP_CONTENT);
layoutParamsWW.gravity = Gravity.CENTER_VERTICAL;

titleTextLayoutParams = new LinearLayout.LayoutParams(LayoutParams.WRAP_CONTENT, LayoutParams.WRAP_CONTENT,1);
titleTextLayoutParams.gravity = Gravity.CENTER_VERTICAL;
rightViewLayoutParams = new LinearLayout.LayoutParams(LayoutParams.WRAP_CONTENT, LayoutParams.WRAP_CONTENT);
rightViewLayoutParams.gravity = Gravity.CENTER_VERTICAL;


titleTextLayout = new LinearLayout(context);
titleTextLayout.setOrientation(LinearLayout.VERTICAL);
titleTextLayout.setGravity(Gravity.CENTER_VERTICAL);
titleTextLayout.setPadding(0, 0, 0, 0);

titleTextBtn = new Button(context);
titleTextBtn.setTextColor(Color.rgb(255, 255, 255));
titleTextBtn.setTextSize(20);
titleTextBtn.setPadding(5, 0, 5, 0);
titleTextBtn.setGravity(Gravity.CENTER_VERTICAL);
titleTextBtn.setBackgroundDrawable(null);
titleTextBtn.setSingleLine();
titleTextLayout.addView(titleTextBtn,new LinearLayout.LayoutParams(LayoutParams.WRAP_CONTENT, LayoutParams.WRAP_CONTENT,1));

titleSmallTextBtn = new Button(context);
titleSmallTextBtn.setTextColor(Color.rgb(255, 255, 255));
titleSmallTextBtn.setTextSize(15);
titleSmallTextBtn.setPadding(6, 0, 5, 0);
titleSmallTextBtn.setGravity(Gravity.CENTER_VERTICAL);
titleSmallTextBtn.setBackgroundDrawable(null);
titleSmallTextBtn.setSingleLine();
titleTextLayout.addView(titleSmallTextBtn,new LinearLayout.LayoutParams(LayoutParams.WRAP_CONTENT,0));

logoView = new ImageView(context);
logoView.setVisibility(View.GONE);
logoLineView = new ImageView(context);
logoLineView.setVisibility(View.GONE);

logoView2 = new ImageView(context);
logoView2.setVisibility(View.GONE);

this.addView(logoView,layoutParamsWW);
this.addView(logoLineView,layoutParamsWW);
this.addView(logoView2,layoutParamsWW);
this.addView(titleTextLayout,titleTextLayoutParams);


// 加右边的布局
rightLayout = new LinearLayout(context);
rightLayout.setOrientation(LinearLayout.HORIZONTAL);
rightLayout.setGravity(Gravity.RIGHT);
rightLayout.setPadding(0, 0, 0, 0);
rightLayout.setHorizontalGravity(Gravity.RIGHT);
rightLayout.setGravity(Gravity.CENTER_VERTICAL);
rightLayout.setVisibility(View.GONE);
this.addView(rightLayout,rightViewLayoutParams);

logoView.setOnClickListener(new View.OnClickListener() {

@Override
public void onClick(View v) {
mActivity.finish();
}
});
}



/**
* 描述:标题栏的背景图.
* @param res  背景图资源ID
*/         
public void setTitleBarBackground(int res) {
this.setBackgroundResource(res);
}

/**
* 描述:设置标题背景.
* @param d  背景图
*/
public void setTitleBarBackgroundDrawable(Drawable d) {
this.setBackgroundDrawable(d);
}

/**
* 描述:标题栏的背景图.
* @param color  背景颜色值
*/
public void setTitleBarBackgroundColor(int color) {
this.setBackgroundColor(color);
}

/**
* 描述:标题文字的对齐,需要在setTitleBarGravity之后设置才生效.
* @param left the left
* @param top the top
* @param right the right
* @param bottom the bottom
*/
public void setTitleTextMargin(int left,int top,int right,int bottom) {
titleTextLayoutParams.setMargins(left, top, right, bottom);
}



/**
* 描述:标题文字字号.
* @param titleTextSize  文字字号
*/
public void setTitleTextSize(int titleTextSize) {
this.titleTextBtn.setTextSize(titleTextSize);
}

/**
* 描述:标题文字字号.
* @param unit
* @param titleTextSize  文字字号
*/
public void setTitleTextSize(int unit,int titleTextSize) {
this.titleTextBtn.setTextSize(unit,titleTextSize);
}

/**
* 描述:设置标题文字对齐方式
* 根据右边的具体情况判定方向:
* (1)中间靠近 Gravity.CENTER,Gravity.CENTER
* (2)左边居左 右边居右Gravity.LEFT,Gravity.RIGHT
* (3)左边居中,右边居右Gravity.CENTER,Gravity.RIGHT
* (4)左边居右,右边居右Gravity.RIGHT,Gravity.RIGHT
* 必须在addRightView(view)方法后设置
* @param gravity1  标题对齐方式
* @param gravity2  右边布局对齐方式
*/
public void setTitleBarGravity(int gravity1,int gravity2) {
AfViewUtil.measureView(this.rightLayout);
AfViewUtil.measureView(this.logoView);
int leftWidth = this.logoView.getMeasuredWidth();
int rightWidth = this.rightLayout.getMeasuredWidth();
//if(D)Log.d(TAG, "测量布局的宽度:"+leftWidth+","+rightWidth);
this.titleTextLayoutParams.rightMargin = 0;
this.titleTextLayoutParams.leftMargin = 0;
//全部中间靠
if((gravity1 == Gravity.CENTER_HORIZONTAL || gravity1 == Gravity.CENTER) ){
            if(leftWidth==0 && rightWidth==0){
            this.titleTextLayout.setGravity(Gravity.CENTER_HORIZONTAL);
}else{
if(gravity2 == Gravity.RIGHT){
if(rightWidth==0){
}else{
this.titleTextBtn.setPadding(rightWidth/3*2, 0, 0, 0);
}
this.titleTextBtn.setGravity(Gravity.CENTER);
this.rightLayout.setHorizontalGravity(Gravity.RIGHT);
}if(gravity2 == Gravity.CENTER || gravity2 == Gravity.CENTER_HORIZONTAL){
this.titleTextLayout.setGravity(Gravity.CENTER_HORIZONTAL);
this.rightLayout.setHorizontalGravity(Gravity.LEFT);
this.titleTextBtn.setGravity(Gravity.CENTER);
int offset = leftWidth-rightWidth;
if(offset>0){
this.titleTextLayoutParams.rightMargin = offset;
}else{
this.titleTextLayoutParams.leftMargin = Math.abs(offset);
}
}
}
//左右
}else if(gravity1 == Gravity.LEFT && gravity2 == Gravity.RIGHT){
this.titleTextLayout.setGravity(Gravity.LEFT);
this.rightLayout.setHorizontalGravity(Gravity.RIGHT);
//全部右靠
}else if(gravity1 == Gravity.RIGHT && gravity2 == Gravity.RIGHT){
this.titleTextLayout.setGravity(Gravity.RIGHT);
this.rightLayout.setHorizontalGravity(Gravity.RIGHT);
}else if(gravity1 == Gravity.LEFT && gravity2 == Gravity.LEFT){
this.titleTextLayout.setGravity(Gravity.LEFT);
this.rightLayout.setHorizontalGravity(Gravity.LEFT);
}

}

/**
* 描述:获取标题文本的Button.
* @return the title Button view
*/
public Button getTitleTextButton() {
return titleTextBtn;
}

/**
* 描述:获取小标题文本的Button.
* @return the title Button view
*/
public Button getTitleSmallTextButton() {
return titleSmallTextBtn;
}

/**
* 描述:获取标题Logo的View.
* @return the logo view
*/
public ImageView getLogoView() {
return logoView;
}

/**
* 描述:获取标题Logo的View.
* @return the logo view
*/
public ImageView getLogoView2() {
return logoView2;
}

/**
* 描述:设置标题字体粗体.
*
* @param bold the new title text bold
*/
public void setTitleTextBold(boolean bold){
TextPaint paint = titleTextBtn.getPaint();  
if(bold){
//粗体
paint.setFakeBoldText(true); 
}else{
paint.setFakeBoldText(false); 
}

}

/**
* 描述:设置标题背景.
*
* @param resId the new title text background resource
*/
public void setTitleTextBackgroundResource(int resId){
titleTextBtn.setBackgroundResource(resId);
}


/**
* 描述:设置标题背景.
*
* @param drawable the new title text background drawable
*/
public void setTitleTextBackgroundDrawable(Drawable drawable){
titleTextBtn.setBackgroundDrawable(drawable);
}

/**
     * 描述:设置标题文本.
     * @param text  文本
     */
public void setTitleText(String text) {
titleTextBtn.setText(text);
}

/**
     * 描述:设置标题文本.
     * @param resId  文本的资源ID
     */
public void setTitleText(int resId) {
titleTextBtn.setText(resId);
}


/**
     * 描述:设置小标题文本.
     * @param text  文本
     */
public void setTitleSmallText(String text) {
if(AfStrUtil.isEmpty(text)){
LinearLayout.LayoutParams titleSmallTextViewLayoutParams = new LinearLayout.LayoutParams(LayoutParams.WRAP_CONTENT, 0);
titleSmallTextBtn.setLayoutParams(titleSmallTextViewLayoutParams);
titleSmallTextBtn.setText("");
}else{
LinearLayout.LayoutParams titleSmallTextViewLayoutParams = new LinearLayout.LayoutParams(LayoutParams.WRAP_CONTENT, LayoutParams.WRAP_CONTENT);
titleSmallTextBtn.setLayoutParams(titleSmallTextViewLayoutParams);
titleSmallTextBtn.setText(text);
}
}

/**
     * 描述:设置标题文本.
     * @param resId  文本的资源ID
     */
public void setTitleSmallText(int resId) {
LinearLayout.LayoutParams titleSmallTextViewLayoutParams = new LinearLayout.LayoutParams(LayoutParams.WRAP_CONTENT, LayoutParams.WRAP_CONTENT);
titleSmallTextBtn.setLayoutParams(titleSmallTextViewLayoutParams);
titleSmallTextBtn.setText(resId);
}

/**
     * 描述:设置Logo的背景图.
     * @param drawable  Logo资源Drawable
     */
public void setLogo(Drawable drawable) {
logoView.setVisibility(View.VISIBLE);
logoView.setBackgroundDrawable(drawable);
}

/**
     * 描述:设置Logo的背景资源.
     * @param resId  Logo资源ID
     */
public void setLogo(int resId) {
logoView.setVisibility(View.VISIBLE);
logoView.setBackgroundResource(resId);
}

/**
     * 描述:设置Logo的背景图.
     * @param drawable  Logo资源Drawable
     */
public void setLogo2(Drawable drawable) {
logoView2.setVisibility(View.VISIBLE);
logoView2.setBackgroundDrawable(drawable);
}

/**
     * 描述:设置Logo的背景资源.
     * @param resId  Logo资源ID
     */
public void setLogo2(int resId) {
logoView2.setVisibility(View.VISIBLE);
logoView2.setBackgroundResource(resId);
}

/**
     * 描述:设置Logo分隔线的背景资源.
     * @param resId  Logo资源ID
     */
public void setLogoLine(int resId) {
logoLineView.setVisibility(View.VISIBLE);
logoLineView.setBackgroundResource(resId);
}

/**
     * 描述:设置Logo分隔线的背景图.
     * @param drawable  Logo资源Drawable
     */
public void setLogoLine(Drawable drawable) {
logoLineView.setVisibility(View.VISIBLE);
logoLineView.setBackgroundDrawable(drawable);
}


/**
     * 描述:把指定的View填加到标题栏右边.
     * @param rightView  指定的View
     */
public void addRightView(View rightView) {
rightLayout.setVisibility(View.VISIBLE);
rightLayout.addView(rightView,layoutParamsFF);
}

/**
     * 描述:把指定资源ID表示的View填加到标题栏右边.
     * @param resId  指定的View的资源ID
     */
public void addRightView(int resId) {
rightLayout.setVisibility(View.VISIBLE);
rightLayout.addView(mInflater.inflate(resId, null),layoutParamsFF);
}

/**
     * 描述:清除标题栏右边的View.
     */
public void clearRightView() {
rightLayout.removeAllViews();
}

/**
* 获取这个右边的布局,可用来设置位置.
*
* @return the right layout
*/
public LinearLayout getRightLayout() {
return rightLayout;
}


/**
* 描述:设置Logo按钮的点击事件.
* @param mOnClickListener  指定的返回事件
*/
public void setLogoOnClickListener(View.OnClickListener mOnClickListener) {
logoView.setOnClickListener(mOnClickListener);
}

/**
* 描述:设置Logo按钮的点击事件.
* @param mOnClickListener  指定的返回事件
*/
public void setLogo2OnClickListener(View.OnClickListener mOnClickListener) {
logoView2.setOnClickListener(mOnClickListener);
}

/**
* 描述:设置标题的点击事件.
* @param mOnClickListener  指定的返回事件
*/
public void setTitleTextOnClickListener(View.OnClickListener mOnClickListener) {
titleTextBtn.setOnClickListener(mOnClickListener);
}

/**
* 描述:设置标题下拉的View.
*
* @param view the new title text drop down
*/
public void setTitleTextDropDown(final View view){
if(view == null){
  return;
}
setTitleTextOnClickListener(new OnClickListener() {

@Override
public void onClick(View v) {
showWindow(titleTextBtn,view,true);
}
});
}


/**
* 获取标题的全体布局.
*
* @return the title text layout
*/
public LinearLayout getTitleTextLayout() {
return titleTextLayout;
}

/** 
}


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值