专栏首页恩蓝脚本Android自定义顶部标题栏

Android自定义顶部标题栏

本文实例为大家分享了Android自定义顶部标题栏展示的具体代码,供大家参考,具体内容如下

思路及实现步骤

1.定义标题栏布局 2.自定义TitleActivity控制标题栏按钮监听 3.在TitleActivity中实现标题栏以下内容切换

首先定义标题栏

<?xml version="1.0" encoding="utf-8"?  
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" 
  android:id="@+id/layout_titlebar" 
  android:layout_width="match_parent" 
  android:layout_height="52dp" 
  android:background="#ed4255"   
 
  <TextView 
    android:id="@+id/text_title" 
    android:layout_width="match_parent" 
    android:layout_height="match_parent" 
    android:ellipsize="marquee" 
    android:gravity="center_horizontal|center" 
    android:singleLine="true" 
    android:text="标题栏" 
    android:textColor="#ffffffff" 
    android:textSize="20dp" /  
 
  <Button 
    android:id="@+id/button_backward" 
    android:layout_width="60dp" 
    android:layout_height="match_parent" 
    android:background="@drawable/title_button_selector" 
    android:drawableLeft="@drawable/back_arrow" 
    android:drawablePadding="6dp" 
    android:ellipsize="end" 
    android:gravity="center" 
    android:onClick="onClick" 
    android:paddingLeft="5dp" 
    android:singleLine="true" 
    android:text="返回" 
    android:textColor="#ffffffff" 
    android:textSize="18dp" 
    android:visibility="invisible" /  
 
  <Button 
    android:id="@+id/button_forward" 
    android:layout_width="60dp" 
    android:layout_height="match_parent" 
    android:layout_alignParentRight="true" 
    android:background="@drawable/title_button_selector" 
    android:drawablePadding="6dp" 
    android:ellipsize="end" 
    android:gravity="center" 
    android:onClick="onClick" 
    android:paddingLeft="5dp" 
    android:singleLine="true" 
    android:text="提交" 
    android:textColor="#ffffffff" 
    android:textSize="18dp" 
    android:visibility="invisible" /  
 
</RelativeLayout  

定义控制标题栏按钮和标题栏以下内容的布局

 <?xml version="1.0" encoding="utf-8"?  
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" 
  android:layout_width="match_parent" 
  android:layout_height="match_parent" 
  android:orientation="vertical"   
 
  <!-- Title --  
 
  <include layout="@layout/layout_titlebar" /  
 
  <FrameLayout 
    android:id="@+id/layout_content" 
    android:layout_width="match_parent" 
    android:layout_height="match_parent" 
    android:background="#fff"   
  </FrameLayout  
 
</LinearLayout  

注:此处使用 <include 标签引入标题栏,且下方有定义一个空的FrameLayout的布局。

定义TitleActivity控制按钮及布局

package org.gaochun.widget; 
import org.gaochun.ui.R; 
import android.app.Activity; 
import android.os.Bundle; 
import android.view.View; 
import android.view.View.OnClickListener; 
import android.view.ViewGroup.LayoutParams; 
import android.widget.Button; 
import android.widget.FrameLayout; 
import android.widget.TextView; 
import android.widget.Toast; 
/** 
* @author gao_chun 
* 自定义标题栏 
*/ 
public class TitleActivity extends Activity implements OnClickListener{ 
//private RelativeLayout mLayoutTitleBar; 
private TextView mTitleTextView; 
private Button mBackwardbButton; 
private Button mForwardButton; 
private FrameLayout mContentLayout; 
@Override 
protected void onCreate(Bundle savedInstanceState) { 
super.onCreate(savedInstanceState); 
setupViews();  //加载 activity_title 布局 ,并获取标题及两侧按钮 
} 
private void setupViews() { 
super.setContentView(R.layout.activity_title); 
mTitleTextView = (TextView) findViewById(R.id.text_title); 
mContentLayout = (FrameLayout) findViewById(R.id.layout_content); 
mBackwardbButton = (Button) findViewById(R.id.button_backward); 
mForwardButton = (Button) findViewById(R.id.button_forward); 
} 
/** 
* 是否显示返回按钮 
* @param backwardResid 文字 
* @param show true则显示 
*/ 
protected void showBackwardView(int backwardResid, boolean show) { 
if (mBackwardbButton != null) { 
if (show) { 
mBackwardbButton.setText(backwardResid); 
mBackwardbButton.setVisibility(View.VISIBLE); 
} else { 
mBackwardbButton.setVisibility(View.INVISIBLE); 
} 
} // else ignored 
} 
/** 
* 提供是否显示提交按钮 
* @param forwardResId 文字 
* @param show true则显示 
*/ 
protected void showForwardView(int forwardResId, boolean show) { 
if (mForwardButton != null) { 
if (show) { 
mForwardButton.setVisibility(View.VISIBLE); 
mForwardButton.setText(forwardResId); 
} else { 
mForwardButton.setVisibility(View.INVISIBLE); 
} 
} // else ignored 
} 
/** 
* 返回按钮点击后触发 
* @param backwardView 
*/ 
protected void onBackward(View backwardView) { 
Toast.makeText(this, "点击返回,可在此处调用finish()", Toast.LENGTH_LONG).show(); 
//finish(); 
} 
/** 
* 提交按钮点击后触发 
* @param forwardView 
*/ 
protected void onForward(View forwardView) { 
Toast.makeText(this, "点击提交", Toast.LENGTH_LONG).show(); 
} 
//设置标题内容 
@Override 
public void setTitle(int titleId) { 
mTitleTextView.setText(titleId); 
} 
//设置标题内容 
@Override 
public void setTitle(CharSequence title) { 
mTitleTextView.setText(title); 
} 
//设置标题文字颜色 
@Override 
public void setTitleColor(int textColor) { 
mTitleTextView.setTextColor(textColor); 
} 
//取出FrameLayout并调用父类removeAllViews()方法 
@Override 
public void setContentView(int layoutResID) { 
mContentLayout.removeAllViews(); 
View.inflate(this, layoutResID, mContentLayout); 
onContentChanged(); 
} 
@Override 
public void setContentView(View view) { 
mContentLayout.removeAllViews(); 
mContentLayout.addView(view); 
onContentChanged(); 
} 
/* (non-Javadoc) 
* @see android.app.Activity#setContentView(android.view.View, android.view.ViewGroup.LayoutParams) 
*/ 
@Override 
public void setContentView(View view, LayoutParams params) { 
mContentLayout.removeAllViews(); 
mContentLayout.addView(view, params); 
onContentChanged(); 
} 
/* (non-Javadoc) 
* @see android.view.View.OnClickListener#onClick(android.view.View) 
* 按钮点击调用的方法 
*/ 
@Override 
public void onClick(View v) { 
switch (v.getId()) { 
case R.id.button_backward: 
onBackward(v); 
break; 
case R.id.button_forward: 
onForward(v); 
break; 
default: 
break; 
} 
} 
} 

MainActivity中调用时直接 extends TitleActivity 使用之前在TitleActivity中定义的方法

以上就是本文的全部内容,希望对大家的学习有所帮助。

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

我来说两句

0 条评论
登录 后参与评论

相关文章

  • Android UI新组件学习和使用

    今天来学习总结一下,Android 后添加的一些新的组件和UI效果,Material Dialog,SwipeRefreshLayout,ListPopupWi...

    砸漏
  • Android 仿京东秒杀倒计时代码

    以上所述是小编给大家介绍的Android 仿京东秒杀倒计时代码 ,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对Z...

    砸漏
  • android 仿QQ动态背景、视频背景的示例代码

    本文介绍了android 仿QQ动态背景、视频背景的示例代码,分享给大家,具体如下:

    砸漏
  • Android 入门程序 Kotlin版(1)

    4个组件 TextView,Button,TextEdit,ImageView依次纵向线性布局。

    用户6021899
  • Android实现加载对话框

    本文实例为大家分享了Android实现加载对话框的具体代码,供大家参考,具体内容如下

    砸漏
  • 微信朋友圈被折叠?会自动化不存在的(下)

    首先,使用 Android Studio 创建一个项目(这里以 JAVA 为例,Kotlin 类似)

    AirPython
  • Android基础控件RadioGroup使用方法详解

    本文为大家分享了Android基础控件RadioGroup的使用,供大家参考,具体内容如下

    砸漏
  • Android按钮美化样式的实现代码

    以上所述是小编给大家介绍的Android按钮美化样式的实现代码,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对Za...

    砸漏
  • ViewFlipper实现上下翻滚轮播效果

    一种可以设置滑动动画的控件,只显示一行布局,在布局文件中的ViewFlipper控件中顺序写好每一行的布局

    砸漏
  • ViewFlipper实现文字轮播效果

    ViewFlipper实现文字轮播(仿淘宝头条垂直滚动广告),供大家参考,具体内容如下

    砸漏

扫码关注云+社区

领取腾讯云代金券