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自定义状态栏颜色与应用标题栏颜色一致

    每次看IOS上的应用,应用中状态栏的颜色总能与应用标题栏颜色保持一致,用户体验很不错,对于这种效果,像我这种好奇心强的人就会去看看那安卓是否可以呢?若是在安卓4.4之前,答案是否定的,但在4.4之后,谷歌允许开发者自定义状态栏背景颜色啦,这是个不错的体验!若你手机上安装有最新版的qq,并且你的安卓SDK版本是4.4及以上,你可以看下它的效果: 实现此功能有两种方法: 1.在xml中设置主题或自定义style: Theme.Holo.Light.NoActionBar.TranslucentDec

  • Android 顶部标题栏随滑动时的渐变隐藏和渐变显示效果

    各位早上好,话不多说,先上效果图: 注意顶部:首页TextView的变化(显示和隐藏)! 首先分析下:UI状态,其是由RecyclerView添加头部组成+RecyclerView 头部添加和RecyclerView分别引用如下:具体的分装数据的过程这里就不在说明,下篇博客会更加深入的写关于 RecyclerView总添加多种不同type类型 compile 'com.bartoszlipinski.recyclerviewheader:library:1.2.1' compile 'com.a

  • Android中隐藏标题栏和状态栏的方法

    一.隐藏标题栏 复制代码 代码如下: //隐藏标题栏        this.requestWindowFeature(Window.FEATURE_NO_TITLE); 二.隐藏状态栏 复制代码 代码如下: //隐藏状态栏        this.getWindow().setFlags(WindowManager.LayoutParams.FLAG_FULLSCREEN, WindowManager.LayoutParams.FLAG_FULLSCREEN); 三.去掉所有Activity界

  • Android中3种全屏方法及3种去掉标题栏的方法

    一.去掉标题栏的方法 第一种:入门的时候经常使用的一种方法 复制代码 代码如下: requestWindowFeature(Window.FEATURE_NO_TITLE);  //去掉标题栏注意这句一定要写在setContentView()方法的前面,不然会报错的 第二种:在AndroidManifest.xml文件中定义 复制代码 代码如下: <application android:icon="@drawable/icon" android:label="@str

  • Android中自定义标题栏样式的两种方法

    原装的Android标题栏配色比较单调,就是黑色的一坨,现在假设你的软件需要独自添加标题栏,这样不仅美观而且可以将进度条等加进去,如何实现: 方法一.在你的那张Activity中onCreate方法中加上下面代码: requestWindowFeature(Window.FEATURE_CUSTOM_TITLE); setContentView(R.layout.main); //软件activity的布局 getWindow().setFeatureInt(Window.FEATURE_CUS

  • Android中去掉标题栏的几种方法(三种)

    1.在java代码中 (SplashActivity继承AppCompatActivity时无效) 2.在manifest.xml中改Theme 3.先在style.xml中自定义style <?xml version="1.0" encoding="UTF-8" ?> <resources> <style name="notitle"> <item name="android:windowNo

  • Android ScrollView滑动实现仿QQ空间标题栏渐变

    今天来研究的是ScrollView-滚动视图,滚动视图又分横向滚动视图(HorizontalScrollView)和纵向滚动视图(ScrollView),今天主要研究纵向的.相信大家在开发中经常用到,ScrollView的功能已经很强大了,但是仍然满足不了我们脑洞大开的UI设计师们,所以我们要自定义-本篇文章主要讲监听ScrollView的滑动实现仿QQ空间标题栏渐变,先看一下效果图: 好了我们切入主题. 有可能你不知道的那些ScrollView属性  •android:scrollbars 设

  • Android4.2中全屏或者取消标题栏的方法总结

    先介绍去掉标题栏的方法: 第一种:也一般入门的时候经常使用的一种方法 requestWindowFeature(Window.FEATURE_NO_TITLE);//去掉标题栏注意这句一定要写在setContentView()方法的前面,不然会报错的 第二种:在AndroidManifest.xml文件中定义 复制代码 代码如下: <application android:icon="@drawable/icon" android:label="@string/app_

  • Android 全屏无标题栏的三种实现方法

    一.通过Java代码 在setContentView之前执行: requestWindowFeature(Window.FEATURE_NO_TITLE);//隐藏标题栏 getWindow().setFlags(WindowManager.LayoutParams.FLAG_FULLSCREEN,WindowManager.LayoutParams.FLAG_FULLSCREEN);//隐藏状态栏 二.调用Android自带的Theme 直接在AndroidManifest.xml中需要全屏显

  • 3种Android隐藏顶部状态栏及标题栏的方法

    本文包含3种隐藏顶部状态栏及标题栏和一种隐藏Android 4.0平板底部状态栏的方法,分享给大家供大家参考,具体内容如下 方法一 public class MainActivity extends Activity { @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); // 隐藏标题栏 requestWindowFeature(Window.FEA

随机推荐