安卓学习之自定义View类和控件(Button去掉边框)

2023-10-27

在很多情况下,我们需要自定义属于自己的layout,毕竟很多时候我们需要把

一些经常用到的布局保存下来,在以后继续使用,避免重复代码。

标题栏实例

xml代码如下

 style="?android:attr/borderlessButtonStyle"//去掉Button的边框
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:orientation="horizontal" android:layout_width="match_parent"
    android:layout_height="50dp"
    android:background="@color/colorBackground"
    >


    <Button
        android:layout_width="42dp"
        android:layout_height="42dp"
        android:id="@+id/title_btn"
        android:layout_margin="5dp"
        style="?android:attr/borderlessButtonStyle"
        android:background="@drawable/back"
        ></Button>

    <TextView
        android:layout_width="0dp"
        android:layout_height="wrap_content"
        android:text="标题栏"
        android:layout_gravity="center|top"
        android:layout_weight="1"
        android:textColor="@android:color/black"
        android:gravity="center"
        ></TextView>

    <Button
        android:layout_height="42dp"
        android:layout_width="42dp"
        android:layout_margin="5dp"
        android:background="@drawable/edit"
        style="?android:attr/borderlessButtonStyle"
        ></Button>



</LinearLayout>

使用的方法,在需要使用的layout里加上

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

注意将自带的标题栏隐藏掉

1.在MainActivity中使用代码

  ActionBar actionBar=getSupportActionBar();
        if(actionBar!=null)
        {
            actionBar.hide();
        }

2.在style里面修改

<style name="AppTheme" parent="Theme.AppCompat.Light.DarkActionBar">这一句代码

自定义控件

很多情况下,对于我们刚才使用的布局中,我们的两个按钮肯定会响应

事件,那么我们最后自定义一个控件来使用,并且把响应控件包装在这个控件

里面。

新建java文件继承自LinerLayout

代码如下

public class TitleLayout extends LinearLayout {
    public TitleLayout(Context context, AttributeSet attres)
    {
        super(context,attres);
            //第一个参数是id,第二个参数是父布局
        LayoutInflater.from(context).inflate(R.layout.title,this);

        Button button1=(Button)findViewById(R.id.title_btn);
        button1.setOnClickListener(new OnClickListener() {
            @Override
            public void onClick(View v) {
                ((Activity)getContext()).finish();
            }
        });
    }
}

调用代码如下

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

<!--<include layout="@layout/title"></include>-->
    <com.example.uicustomview.TitleLayout
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        ></com.example.uicustomview.TitleLayout>

</LinearLayout>

总结:

  • 对于很多控件,我们都可以自定义布局来实现控件
  • 最后实现了自定义控件后也应该实现自定义的控件
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

安卓学习之自定义View类和控件(Button去掉边框) 的相关文章

  • 充电IC驱动调试----移植充电IC bq25601

    关键词 MTK android 充电IC 内核 linux3 18 系统 android7 0 作者 arunboy 欢迎转载 请注明作者 在原有展讯平台下面的bq25601的基础上编写mtk平台下的bq25601代码 参考mtk平台下的
  • Android开发之多级下拉列表菜单实现(仿美团,淘宝等)

    注 本文转载于 http blog csdn net minimicall article details 39484493 下载地址 http download csdn net detail minimicall 7956483 我们在
  • flutter video_player视频播放器的横竖屏切换

    参考 需要使用到的库 import package flutter services dart 用到的方法 实现全屏功能代码 一般写在按钮或者初始化函数里 SystemChrome setPreferredOrientations Devi
  • Poppuwindow的简单使用

    继 DialogFragment的简单使用 之后 我们再来试试 Poppuwindow 的简单使用 切记 本篇博客只能保证你入门哦 适合小白学习 效果展示 1 几个常用的构造方法 public PopupWindow Context con
  • ARouter初始化及跳转原理

    ARouter初始化及跳转原理 编译后生成文件 仓库类 class Warehouse Cache route and metas static Map
  • Android 开发中ScrollView无法上下滚动

    本节目录 问题 解决办法 问题 因项目需要做一个App出来 所以最近在学Android Studio开发 但是我在利用ScrollView实现内容上下滚动的时候出现了一个问题 就是无法将超出页面的内容进行上下滑动 设计UI界面如下 这里的T
  • flutter 对象模型的理解

    如果要传值 传一个int值时就很简单了 类型就是int 如果我们要传好多个值呢 里面有int 也有String 也会有列表 对象 当然我们也可以一个个传 问题是这样子很麻烦 我们可以将这些不同的类型数据堆到一个模型里面 然后传这个模型 也就
  • flutter imagepicker点击不了

    参考 already active 图像选取器已处于活动状态 null null 将Gradle版本降级为 classpath com android tools build gradle 3 5 4
  • C语言 - static inline

    2019 07 16 今天在看DPDK负载均衡的实例代码中 通过函数跳转 看到官方API后 发现了static inline这个关键字 这个我只是在很早之前知道inline是内联的 可以不进行压栈 但是static毕竟是限制函数的作用域的啊
  • 如何安装和使用Android夜神模拟器

    夜神模拟器 是全新一代的安卓模拟器 能够让你在电脑上畅玩手机游戏 与传统安卓模拟器相比 基于Android7 1内核 同时向下兼容Android5 1内核以及X86 AMD 具备极高的兼容性和稳定性 加上超高帧率模式 能够在电脑上运行高性能
  • 小米解bl锁跳过168小时_xiaomi redmi 红米秒解BL工具分享支持小米红米机型秒解BL跳过168小时

    目前小米的新机 官方风控都默认绑定7天也就是168小时才能解锁BL 部分账号需要绑定15天才能满足条件 导致很多爱玩机的小伙伴被拒门外 并不是所有人都愿意等待官方解锁时候 而跳过168小时解锁 也成为了很多小伙伴希望的事情 本工具来自ROM
  • Android中应用程序清除data/data,清除缓存,兼容8.0系统

    前言 最近实现了一款系统级应用中心 需要获取已安装APP的缓存大小以及清除缓存 获取缓存的在另外一篇博客总结过 获取APP缓存大小 因此这篇文章记录一下如何清除缓存 一 安卓8 0之前 1 首先需要自己创建几个AIDL文件 方法在前言连接里
  • 高帧率手机 Flutter 列表慢慢拖动的时候会有明显的抖动

    高帧率手机上 Flutter列表慢慢拖动的时候会感觉到明显的抖动现象 比如 一加手机输入的运行频率为120hz 而显示屏的运行频率为90hz 滚动时 这种不匹配会导致性能下降 google团队通过以下的方法来解决此问题 void main
  • Android中Activity的开启Activity页面的跳转详解

    android开启和关闭activity 1 在android 中我们要开启和关闭activity按钮首先就要创建两个activity 2 然后在他们的布局文件中添加页面 3 然后使用java代码编写程序实现页面的开启和关闭 在MainAc
  • 安卓Kotlin 使用ViewPager2实现简易左右滑动翻页效果

    布局很简单 R layout onepage仅有一个占满全屏幕的ImageView名为onei R layout activity view仅有一个占满全屏幕的ViewPager2名为vp 以下为Activity的全部代码 class Vi
  • Intent中addFlags()和SetFlags()的区别和详解

    两个方法的区别是setflag是直接给intent设置新的flag addflag是在已有flag上添加新的flag Public Intent addFlags int flags 增加额外的标志到Intent 或者已经存在的flags值
  • didChangeDependencies什么时候被调用

    参考 我先上一个Demo 这个Demo也就是网上面传的比较广的 我们就以这个来举例子说明网上的结论 父级结构中的层级发生变化时didChangeDependencies被调用 这个结论为什么是不完整 import package flutt
  • 制作一个“生日快乐”App,来自程序员的生日礼物~

    点击上方 码农的后花园 选择 星标 公众号 精选文章 第一时间送达 之前给大家制作了一个来自程序员的表白神器 本期带大家做一个 生日快乐 App 来自程序员的生日礼物 不要再说程序员不懂浪漫咯 往期精彩 Android App 开发的三种姿
  • Android studio创建秘钥提示JKS密钥库使用专用格式。建议使用“keytool -importkeystore -srckeystore....

    1 复制图中 内的内容 keytool importkeystore srckeystore F AndroidTestKey testtow jks destkeystore F AndroidTestKey testtow jks de
  • 旧电脑再利用:完整版 Chrome OS 安装指南

    很多人家里应该都有用了好几年 配置略微有些老旧的笔记本或台式电脑 如果不考虑二手变卖 为它们安装更加轻量的操作系统其实也是一个不错的旧物利用技巧 此前我曾经为大家介绍过在普通 PC 安装 Fyde OS 的方法 虽然无论是 Fyde OS

随机推荐

  • 热点|ChatGPT到底是什么,ChatGPT给通信行业带来什么影响

    最近这段时间 ChatGPT火爆全网 引发了整个社会的强烈关注 这个来自OpenAI公司的聊天机器人 表现出了极为逆天的人工智能水平 让所有人为之震惊 其实 对人工智能 以下简称 AI 的能力 人类是有心理准备的 数十年来 我们观看的很多影
  • 简单的CSS案例——新闻介绍

  • C++删除文件

    使用remove函数删除本地文件 头文件 include
  • C++类模板实例化与专门化

    12 8 C 类模板实例化与专门化 12 8 1 隐式实例化 编译器只有在生成模板对象的时候才会生成模板类的实例化类定义 然后根据实例化类生成对象 12 8 2 显式实例化 12 8 2 1 定义 使用关键字template并指定类型的语句
  • unsigned char 类型数据似乎不能用作赋值

    unsigned char 类型的数据似乎不能用作赋值的量 起初我以为给unsigned char类型的数组赋值也要用unsigned char类型的变量才行 include
  • thinkphp的debug调试开启、关闭

    官方文档 https www kancloud cn manual thinkphp6 0 1037618 前言 强烈建议在开发阶段始终开启调试模式 直到正式部署后关闭调试模式 方便及时发现隐患问题和分析 解决问题 开启 如果你是通过 Co
  • 4月程序员薪资出炉,又又又拖后腿了?

    无论你等或不等 4月全国程序员就业薪资排行榜都已经来了 在这次的排行中 北京以18094元排行第一名 杭州 南京等新一线城市的排名表现不错 甚至超过一线城市广州 快来看看你拖城市后腿了没有 来源网络 如侵删 从城市排行中可以看到 现在程序员
  • CUDA Samples: Long Vector Add

    以下CUDA sample是分别用C 和CUDA实现的两个非常大的向量相加操作 并对其中使用到的CUDA函数进行了解说 各个文件内容如下 common hpp ifndef FBC CUDA TEST COMMON HPP define F
  • mybatis的一些特殊符号标识(大于,小于,等于,不等于)

    特殊字符 替代符号 红色基本为常用的 amp lt lt gt gt quot apos 小于等于 a lt b a lt b a b 大于等于 a gt b a gt b a b 不等于 a ba b a
  • 【allegro 17.4软件操作保姆级教程十一】表贴器件封装制作

    个人主页 highman110 作者简介 一名硬件工程师 持续学习 不断记录 保持思考 输出干货内容 目录 封装组成元素 焊盘类型 表贴器件封装制作 环境设置 计算坐标 放置pin脚 绘制丝印线 放置位号和value 放置1脚标识 放置其他
  • Linux QT GUI 界面程序打包 linuxdeployqt

    说明 1 主要依赖linuxdeployqt打包工具 2 打包Linux上的QT界面软件 使其不依赖QT开发环境 linuxdeployqt安装过程 不能下载官方编译好的 appimage文件 会报告gblic的问题 下载官方源码 修改ma
  • 【深度学习】真正的即插即用!盘点11种CNN网络设计中精巧通用的“小”插件...

    作者丨皮特潘 编辑丨极市平台 导读 所谓 插件 就是要能锦上添花 又容易植入 落地 即真正的即插即用 本文盘点的 插件 能够提升CNN平移 旋转 scale等变性能力或多尺度特征提取 感受野等能力 在很多SOTA网络中都会看到它们的影子 前
  • java基础题系列(1 - 10)

    说在前面 马上就要到秋招了 也从网上获取了一些java的基础面试题 总共有100多道 为了保持状态 每天回顾10道左右 如果result有不对的地方 希望各位大佬可以指正 谢谢 20200706 by 1z 请你说说java和php的区别
  • [开发

    使用Jackson库解析JSON 在Maven项目中 在pom xml中添加以下依赖
  • Mac连接网线能够接收微信消息,浏览器不能访问网页

    1 问题 Mac连接网线能够接收微信消息 浏览器不能访问网页 访问网页 有提示 如下信息 找不到IP地址 2 解决方法 和其他人的配置进行比较 发现自己的网络设置中 DNS服务器显示的是8 8 8 8 其他人的是灰色的DNS服务器 点击高级
  • git blame命令详解

    文章目录 1 git blame用法 2 举例 1 git blame用法 git blame用来追溯一个指定文件的历史修改记录 git blame用来追溯一个指定文件的历史修改记录 它能显示任何文件中每行最后一次修改的提交记录 所以 如果
  • mybatis---设置typeAliasesPackage支持通配符匹配

    设置typeAliasesPackage支持 通配符匹配 mybatis的typeAliasesPackage属性的作用是 搜索指定包别名 配置了以后xml文件中的resultType和parameterType就不需要指定全类名com e
  • linux服务器网站安全狗安装教程

    1 下载服务器安全狗和服务器网站安全狗 选择好版本 http download safedog cn safedog linux64 tar gz 这个是网站安全狗的下载地址 2 进行下载 命令是 wget http down safedo
  • CTF实战30 CTF题目练习和讲解五

    该培训中提及的技术只适用于合法CTF比赛和有合法授权的渗透测试 请勿用于其他非法用途 如用作其他非法用途与本文作者无关 这一阶段我们将会接触PWN类的题目 PWN等于REVERSE 因为一开始可能很多逆向的基础都不太好 毕竟我们重点不是PW
  • 安卓学习之自定义View类和控件(Button去掉边框)

    在很多情况下 我们需要自定义属于自己的layout 毕竟很多时候我们需要把 一些经常用到的布局保存下来 在以后继续使用 避免重复代码 标题栏实例 xml代码如下 style android attr borderlessButtonStyl