Android组合控件自定义标题栏

本文实例为大家分享了Android简单的自定义标题栏,供大家参考,具体内容如下

android自定义控件向来都是开发者最头疼的,但是我们要有那种迎难而上的精神。

MainActivity

package com.example.customview;

import android.support.v7.app.ActionBar;
import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.view.View;
import android.widget.Toast;

/*
 android自定义标题组合控件
 步骤:
 1.首先写出需要功能的布局xml,分析布局的父控件是谁?
 例如水平布局 父控件应该是linearlayout较为合适
 2.创建自定义控件类并继承xml父控件
 3.在构造方法中使用layoutInflat动态加载布局
 */
public class MainActivity extends AppCompatActivity {

 @Override
 protected void onCreate(Bundle savedInstanceState) {
  super.onCreate(savedInstanceState);
  setContentView(R.layout.activity_main);
  //去除自带标题栏
  ActionBar actionBar = getSupportActionBar();
  if (actionBar != null) {
   actionBar.hide();
  }
 }

}

TitleLayout.class

package com.example.customview.custom;

import android.app.Activity;
import android.content.Context;
import android.util.AttributeSet;
import android.view.LayoutInflater;
import android.view.View;
import android.widget.Button;
import android.widget.LinearLayout;
import android.widget.TextView;
import android.widget.Toast;

import com.example.customview.R;

/**
 * 自定义标题栏 并赋有点击事件
 */
public class TitleLayout extends LinearLayout implements View.OnClickListener {
 private Button btback, btopen;
 private TextView tvtitle;

 public TitleLayout(Context context, AttributeSet attrs) {
  super(context, attrs);
  //动态加载标题栏布局
  LayoutInflater.from(context).inflate(R.layout.custom_layout, this);
  initView();
 }

 private void initView() {//初始化控件
  btback = (Button) findViewById(R.id.btback);
  btback.setOnClickListener(this);
  btopen = (Button) findViewById(R.id.btopen);
  btopen.setOnClickListener(this);
  tvtitle = (TextView) findViewById(R.id.tvtitle);
  tvtitle.setOnClickListener(this);
 }

 @Override
 public void onClick(View view) {//监听点击事件
  switch (view.getId()) {
   case R.id.btback:
    ((Activity) getContext()).finish();
    Toast.makeText(getContext(), "销毁当前Activity", Toast.LENGTH_SHORT).show();
    break;
   case R.id.btopen:
    Toast.makeText(getContext(), "展开", Toast.LENGTH_SHORT).show();
    break;
   case R.id.tvtitle:
    Toast.makeText(getContext(), "标题", Toast.LENGTH_SHORT).show();
    break;
  }
 }
}

activity_main.xml

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
 xmlns:tools="http://schemas.android.com/tools"
 android:layout_width="match_parent"
 android:layout_height="match_parent"
 android:orientation="vertical"
 tools:context="com.example.customview.MainActivity">

 <include layout="@layout/custom_layout" />

 <com.example.customview.custom.TitleLayout
  android:layout_width="match_parent"
  android:layout_height="wrap_content" />
</LinearLayout>

custom_layout.xml

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
 xmlns:tools="http://schemas.android.com/tools"
 android:layout_width="match_parent"
 android:layout_height="match_parent"
 android:orientation="vertical"
 tools:context="com.example.customview.MainActivity">

 <include layout="@layout/custom_layout" />

 <com.example.customview.custom.TitleLayout
  android:layout_width="match_parent"
  android:layout_height="wrap_content" />
</LinearLayout>

粘贴以上代码就可以运行了。

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

(0)

相关推荐

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

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

  • Android自定义状态栏颜色与应用标题栏颜色一致

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

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

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

  • Android自定义简单的顶部标题栏

    本文实例为大家分享了Android实现简单顶部标题栏的具体代码,供大家参考,具体内容如下 实现功能: 1)自定义View标题栏布局: 2)灵活的可以自己传入类型,选择所需要的控件来显示隐藏 3)相对于我之前写过的一篇,免继承,可直接在布局里使用 4)直接可以在布局控件里设置属性 老规矩,上几张效果图: 由效果图可见,这个是可以根据传入type来控制,比较灵活的 下面就来实现以下步骤,最后我会贴上源码 1.创建一个布局文件,命名,layout_titlebar,来部署我们的标题栏样式,可以自定义更

  • Android自定义复合控件实现通用标题栏

    本文实例为大家分享了Android复合控件实现通用标题栏的具体代码,供大家参考,具体内容如下 效果图 估计大家应该和我一样,每次去看别人博客的时候,都喜欢一拉到底,先看看有没有效果图,符不符合自己的需求,符合咱就继续看,不符合免得浪费表情,所以效果图先上为敬 写在前面的一点儿废话 作为Android的菜鸟一枚,一直觉得能够写自定义控件是一个很炫酷的技能,最近看了徐宜生老师的群英传之后,感觉收获还是挺多的.这篇文章就主要记录的是学习自定义控件中最简单的复合控件的过程.虽然现在MD中Toolbar已

  • Android自定义通用标题栏CustomTitleBar

    本文实例为大家分享了Android自定义通用标题栏的具体代码,供大家参考,具体内容如下/p> 1自定义一个public_titlebar.xml文件 <?xml version="1.0" encoding="utf-8"?> <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:id="@+id/root

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

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

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

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

  • 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

随机推荐