-
java button 背景色_java – 如何设置自定义按钮状态背景颜色?
2021-02-26 15:04:01我有一个包含drawable和text的按钮.我希望按钮的背景与提供的正常背景不同(最好...我试图在一个带有定义颜色的drawable文件夹中创建一个选择器(在处理按钮文本时效果很好),如下所示:并将此xml设置为android:backgr...我有一个包含drawable和text的按钮.我希望按钮的背景与提供的正常背景不同(最好是纯色).这很好用,我只是在
XML文件中使用android:background属性并相应地分配颜色.但是,我希望背景在选择或聚焦时变为不同的颜色(状态选择器).
我试图在一个带有定义颜色的drawable文件夹中创建一个选择器(在处理按钮文本时效果很好),如下所示:
并将此xml设置为android:background属性,如下所示:
android:background="@drawable/button_state"
但这导致一个力量关闭说明:
Caused by: android.content.res.Resources$NotFoundException: File res/drawable/button_state.xml from drawable resource ID #0x7f020070
但资源就在那里.你能不自定义背景状态?如果可以,怎么样?或者我做错了什么?谢谢您的帮助!
-
如何设置自定义按钮的样式
2007-07-13 13:11:00MFC编程中系统提供的一些样式,一般都比较难看,所以有的时候为了美观,需要自己定义些样式,现那Button按钮来举例.首先新建一名为XPButton的MFC Application的对话框应用程序,在Class View中新增加一个自定义样式的MFC ...MFC编程中系统提供的一些样式,一般都比较难看,所以有的时候为了美观,需要自己定义些样式,现那Button按钮来举例.首先新建一名为XPButton的MFC Application的对话框应用程序,在Class View中新增加一个自定义样式的MFC Class类,类名为CNewButton,基类为CButton.NewButton.h的代码如下:class CNewButton : public CButton{ public:CNewButton();protected:CPen m_BoundryPen; //按钮的外边框//鼠标指针置于按钮之上时按钮的内边框CPen m_InsideBoundryPenLeft;CPen m_InsideBoundryPenRight;CPen m_InsideBoundryPenTop;CPen m_InsideBoundryPenBottom;//按钮获得焦点时按钮的内边框CPen m_InsideBoundryPenLeftSel;CPen m_InsideBoundryPenRightSel;CPen m_InsideBoundryPenTopSel;CPen m_InsideBoundryPenBottomSel;//按钮的底色,包括有效和无效两种状态CBrush m_FillActive;CBrush m_FillInactive;//按钮的状态BOOL m_bOver; //鼠标位于按钮之上时该值为true,反之为flaseBOOL m_bTracking; //在鼠标按下没有释放时该值为trueBOOL m_bSelected; //按钮被按下是该值为trueBOOL m_bFocus; //按钮为当前焦点所在时该值为truepublic:protected:virtual voidPreSubclassWindow();public:virtual void DrawItem(LPDRAWITEMSTRUCT lpDrawItemStruct);virtual void DoGradientFill(CDC *pDC, CRect* rect);virtual void DrawInsideBorder(CDC *pDC, CRect* rect);virtual ~CNewButton();protected:afx_msg void OnMouseMove(UINT nFlags, CPoint point);afx_msg LRESULT OnMouseLeave(WPARAM wParam, LPARAM lParam);afx_msg LRESULT OnMouseHover(WPARAM wParam, LPARAM lParam);DECLARE_MESSAGE_MAP()};NewButton.cpp的代码如下:#include "stdafx.h"#include "NewButton.h"#ifdef _DEBUG#define new DEBUG_NEW#undef THIS_FILEstatic char THIS_FILE[] = __FILE__;#endifCNewButton::CNewButton() //构造函数{m_BoundryPen.CreatePen(PS_INSIDEFRAME | PS_SOLID, 1, RGB(0, 0, 0));//按钮的外边框画笔m_InsideBoundryPenLeft.CreatePen(PS_INSIDEFRAME | PS_SOLID, 3, RGB(61, 97, 88)); m_InsideBoundryPenRight.CreatePen(PS_INSIDEFRAME | PS_SOLID, 3, RGB(61, 137, 106));m_InsideBoundryPenTop.CreatePen(PS_INSIDEFRAME | PS_SOLID, 2, RGB(102, 167, 114)); m_InsideBoundryPenBottom.CreatePen(PS_INSIDEFRAME | PS_SOLID, 2, RGB(102, 167, 114));//按钮的背景色m_FillActive.CreateSolidBrush(RGB(223, 222, 236));m_FillInactive.CreateSolidBrush(RGB(222, 223, 236));m_InsideBoundryPenLeftSel.CreatePen(PS_INSIDEFRAME | PS_SOLID, 3, RGB(139, 189, 157));m_InsideBoundryPenTopSel.CreatePen(PS_INSIDEFRAME | PS_SOLID, 2, RGB(162, 201, 255));m_InsideBoundryPenRightSel.CreatePen(PS_INSIDEFRAME | PS_SOLID, 3, RGB(162, 189, 252));m_InsideBoundryPenBottomSel.CreatePen(PS_INSIDEFRAME | PS_SOLID, 2, RGB(162, 201, 255));m_bOver = m_bSelected = m_bTracking = m_bFocus = FALSE;}CNewButton::~CNewButton(){m_BoundryPen.DeleteObject();m_InsideBoundryPenLeft.DeleteObject();m_InsideBoundryPenRight.DeleteObject();m_InsideBoundryPenTop.DeleteObject();m_InsideBoundryPenBottom.DeleteObject();m_FillActive.DeleteObject();m_FillInactive.DeleteObject();m_InsideBoundryPenLeftSel.DeleteObject();m_InsideBoundryPenTopSel.DeleteObject();m_InsideBoundryPenRightSel.DeleteObject();m_InsideBoundryPenBottomSel.DeleteObject();}BEGIN_MESSAGE_MAP(CNewButton, CButton)ON_WM_MOUSEMOVE()ON_MESSAGE(WM_MOUSELEAVE, OnMouseLeave)ON_MESSAGE(WM_MOUSEHOVER, OnMouseHover)END_MESSAGE_MAP()//添加Owner Draw属性void CNewButton::PreSubclassWindow(){CButton::PreSubclassWindow();ModifyStyle(0, BS_OWNERDRAW);}void CNewButton::OnMouseMove(UINT nFlags, CPoint point){if (!m_bTracking){TRACKMOUSEEVENT tme;tme.cbSize = sizeof(tme);tme.hwndTrack = m_hWnd;tme.dwFlags = TME_LEAVE | TME_HOVER;tme.dwHoverTime = 1;m_bTracking = _TrackMouseEvent(&tme);}CButton::OnMouseMove(nFlags, point);}LRESULT CNewButton::OnMouseLeave(WPARAM wParam, LPARAM lParam){m_bOver = FALSE;m_bTracking = FALSE;InvalidateRect(NULL, FALSE);return 0;}LRESULT CNewButton::OnMouseHover(WPARAM wParam, LPARAM lParam){m_bOver = TRUE;InvalidateRect(NULL);return 0;}void CNewButton::DrawItem(LPDRAWITEMSTRUCT lpDrawItemStruct){//从lpDrawItemStruct获取控件的相关信息CRect rect = lpDrawItemStruct->rcItem;CDC *pDC=CDC::FromHandle(lpDrawItemStruct->hDC);int nSaveDC=pDC->SaveDC();UINT state = lpDrawItemStruct->itemState;POINT pt ;TCHAR strText[MAX_PATH + 1];::GetWindowText(m_hWnd, strText, MAX_PATH);//画按钮的外边框,它是一个半径为5的圆角矩形pt.x =5;pt.y =5;CPen* hOldPen = pDC->SelectObject(&m_BoundryPen);pDC->RoundRect(&rect, pt);//获取按钮的状态if (state & ODS_FOCUS){m_bFocus = TRUE; m_bSelected = TRUE;}else{m_bFocus = FALSE; m_bSelected = FALSE;}if (state & ODS_SELECTED || state & ODS_DEFAULT){m_bFocus = TRUE;}pDC->SelectObject(hOldPen);rect.DeflateRect(CSize(GetSystemMetrics(SM_CXEDGE), GetSystemMetrics(SM_CYEDGE)));//根据按钮的状态填充按钮的底色CBrush* pOldBrush;if (m_bOver){pOldBrush = pDC->SelectObject(&m_FillActive);DoGradientFill(pDC, &rect);}else{pOldBrush = pDC->SelectObject(&m_FillInactive);DoGradientFill(pDC, &rect);}//根据按钮的状态绘制内边框if (m_bOver || m_bSelected)DrawInsideBorder(pDC, &rect);pDC->SelectObject(pOldBrush);//显示按钮的文本if (strText!=NULL){CFont* hFont = GetFont();CFont* hOldFont = pDC->SelectObject(hFont);CSize szExtent = pDC->GetTextExtent(strText, lstrlen(strText));CPoint pt( rect.CenterPoint().x - szExtent.cx / 2, rect.CenterPoint().y - szExtent.cy / 2);if (state & ODS_SELECTED)pt.Offset(1, 1);int nMode = pDC->SetBkMode(TRANSPARENT);if (state & ODS_DISABLED)pDC->DrawState(pt, szExtent, strText, DSS_DISABLED, TRUE, 0, (HBRUSH)NULL);elsepDC->DrawState(pt, szExtent, strText, DSS_NORMAL, TRUE, 0, (HBRUSH)NULL);pDC->SelectObject(hOldFont);pDC->SetBkMode(nMode);}pDC->RestoreDC(nSaveDC);}//绘制按钮的底色void CNewButton::DoGradientFill(CDC *pDC, CRect* rect){CBrush brBk[64];int nWidth = rect->Width();int nHeight = rect->Height();CRect rct;for (int i = 0; i < 64; i ++){if (m_bOver){if (m_bFocus)brBk[i].CreateSolidBrush(RGB(255 - (i / 4), 255 - (i / 4), 255 - (i / 3)));elsebrBk[i].CreateSolidBrush(RGB(255 - (i / 4), 255 - (i / 4), 255 - (i / 5)));}else{if (m_bFocus)brBk[i].CreateSolidBrush(RGB(255 - (i / 3), 255 - (i / 3), 255 - (i / 4)));elsebrBk[i].CreateSolidBrush(RGB(255 - (i / 3), 255 - (i / 3), 255 - (i / 5)));}}for (i = rect->top; i <= nHeight + 2; i ++){rct.SetRect(rect->left, i, nWidth + 2, i + 1);pDC->FillRect(&rct, &brBk[((i * 63) / nHeight)]);}for (i = 0; i < 64; i ++)brBk[i].DeleteObject();}//绘制按钮的内边框void CNewButton::DrawInsideBorder(CDC *pDC, CRect* rect){CPen *pLeft, *pRight, *pTop, *pBottom;if (m_bSelected && !m_bOver){pLeft = & m_InsideBoundryPenLeftSel;pRight = &m_InsideBoundryPenRightSel;pTop = &m_InsideBoundryPenTopSel;pBottom = &m_InsideBoundryPenBottomSel;}else{pLeft = &m_InsideBoundryPenLeft;pRight = &m_InsideBoundryPenRight;pTop = &m_InsideBoundryPenTop;pBottom = &m_InsideBoundryPenBottom;}CPoint oldPoint = pDC->MoveTo(rect->left, rect->bottom - 1);CPen* pOldPen = pDC->SelectObject(pLeft);pDC->LineTo(rect->left, rect->top + 1);pDC->SelectObject(pRight);pDC->MoveTo(rect->right - 1, rect->bottom - 1);pDC->LineTo(rect->right - 1, rect->top);pDC->SelectObject(pTop);pDC->MoveTo(rect->left - 1, rect->top);pDC->LineTo(rect->right - 1, rect->top);pDC->SelectObject(pBottom);pDC->MoveTo(rect->left, rect->bottom);pDC->LineTo(rect->right - 1, rect->bottom);pDC->SelectObject(pOldPen);pDC->MoveTo(oldPoint);if (m_bSelected && !m_bOver)DrawFocusRect(pDC->m_hDC,rect);}3.设置某个按钮为上面所定义的样式,只需右键点击该按钮,添加变量,变量的类型CNewButton,变量名为m_Button.编译运行,就可以看到自己定义的按钮. -
SwiftUI Toolbar如何设置自定义颜色和形状按钮 (教程含源码)
2020-09-21 22:22:01SwiftUI Toolbar如何设置自定义颜色和形状按钮 本文价值与收获 看完本文后,您将能够作出下面的界面 看完本文您将掌握的技能 掌握toolbar基础配置 掌握ToolbarItem 掌握自定义按钮 struct ShapeButton<S:...实战需求
SwiftUI Toolbar如何设置自定义颜色和形状按钮
本文价值与收获
看完本文后,您将能够作出下面的界面
看完本文您将掌握的技能
- 掌握toolbar基础配置
- 掌握ToolbarItem
- 掌握自定义按钮
struct ShapeButton<S:Shape>: View
基础知识
toolbar(items:)
可将指定项目填充到工具栏或导航栏。
func toolbar<Items>(items: () -> ToolbarItemGroup<Void, Items>) -> some View
(一)ToolbarItem
表示可放置在工具栏或导航栏中的项的模型。
struct ToolbarItem<ID, Content> where Content : View
(二)ToolbarItem 分类
toolbar 使用教程
.bottomBar
该项放置在底部工具栏中。
static let bottomBar: ToolbarItemPlacement
bottomBar 使用代码
import SwiftUI struct ContentView: View { var body: some View { NavigationView { Text("SwiftUI toolbar 基础教程").padding() .navigationTitle("SwiftUI") .toolbar { ToolbarItem(placement:.bottomBar) { Button("点击我") { print("Pressed") } } } } } }
实战代码
import SwiftUI struct ShapeButton<S:Shape>: View { var shape: S var color: Color var action: () -> () @GestureState private var tapped = false var body: some View { shape .fill(color).opacity(tapped ? 0.4 : 1) .animation(.linear(duration: 0.15), value: tapped) .frame(width: 18, height: 18) .gesture(DragGesture(minimumDistance: 0) .updating($tapped) { value, state, _ in state = true } .onEnded { _ in action() }) } } struct ContentView: View { @State var tc = Color.black var body: some View { NavigationView { Text("设置自定义形状的Toolbar") .foregroundColor(self.tc) .toolbar { ToolbarItem(placement: .bottomBar) { ShapeButton(shape: Rectangle(), color: .red) { print(">> works") self.tc = .red } } ToolbarItem(placement: .bottomBar) { ShapeButton(shape: Circle(), color: .blue) { print(">> works") self.tc = .blue } } } } } }
加入我们一起学习SwiftUI
QQ:3365059189
SwiftUI技术交流QQ群:518696470 -
IOS 如何给自定义按钮设置选中的效果
2016-09-23 17:08:36设置自定义button [_loginButton setBackgroundImage:[UIImage imageWithColor:COLOR(147,36,50,1) frameSize:CGSizeMake(view_width, 40 *kScale)] forState:UIControlStateHighlighted];- 首先给UIImage添加一个类目
- 在类目中实现一个根据颜色生成图片的方法
代码示例
- + (UIImage *)imageWithColor:(UIColor *)color frameSize:(CGSize)frameSize
- {
- CGFloat imageWidth = frameSize.width;
- CGFloat imageHeight = frameSize.height;
- // 开启基于位图的图形上下文
- UIGraphicsBeginImageContextWithOptions(frameSize, NO, 0.0);
- // 画一个colo颜色的矩形框
- [color set];
- UIRectFill(CGRectMake(0, 0, imageWidth, imageHeight));
- // 拿到图片
- UIImage *image = UIGraphicsGetImageFromCurrentImageContext();
- // 关闭上下文
- UIGraphicsEndImageContext();
- return image;
- }
设置自定义button
[_loginButton setBackgroundImage:[UIImage imageWithColor:COLOR(147,36,50,1) frameSize:CGSizeMake(view_width, 40 *kScale)] forState:UIControlStateHighlighted]; -
如何设置自定义导航控制器全局返回按钮 --- ios
2016-04-25 21:55:00我们可以在push的时候来设置这个自定义按钮,push有一个方法 - (void)pushViewController:(UIViewController *)viewController animated:(BOOL)animated{} 在这个方法中viewController是push的对象 但是要判断这... -
如何不自定义按钮又想给按钮传递参数?---利用运行时给按钮做关联!
2017-03-20 14:45:00我们比较容易想到的方法也许是把参数装在一个数组里面...或者你会自定义按钮,给按钮添加属性,来完成需求. 但我今天呢,要利用runtime的关联来完成传参操作; 一言不合就上代码: #import "ViewController.h" #im... -
在VS2005中设置WPF中自定义按钮的事件
2018-10-25 14:25:00在VS2005中设置WPF中自定义按钮的事件 原文:在VS2005中设置WPF中自定义按钮的事件 上篇讲了如何在Blend中绘制圆角矩形... -
avuejs 单选按钮不能切换_如何在SAP屏幕上自定义按钮
2020-12-08 11:12:22在你看不到路的情况下,如何抹黑的走下去黑暗的莫个角落有个我一直默默的在SAP学习的路上期待那天有个伯乐能发现我的存在如何在SAP屏幕上自定义按钮?在分析单个物料的MRP数据时,例如经常会在MD04(查看MRP)及MD02... -
ext 确认框 自定义按钮_「MAC」Word如何设置导航窗格的快捷键 Word自定义快捷键教程...
2020-12-28 00:45:30想要自定义快捷键,该怎么设置呢?下面就和小编一起来看看Word Mac版设置导航窗格的快捷键的详细教程吧!1、点击头部工具栏的“工具”选项,再点击“自定义键盘”,这时就进入到自定义快捷键的功能区了。2、选择... -
MFC 如何将自定义按钮,添加到对话框的成员变量中?
2015-04-26 07:05:57我新建了一个类CIconButton, //public CButton 但是,当我用class wizard向对话框类中添加成员变量时,双击列表中的...//按钮的OwnerDraw属性已设置为true 手动在对话框头文件中,将控件关联变量的类型,从C -
如何将上传文件的浏览按钮修改为自定义按钮
2016-10-09 22:52:00最近,在修改一个国际化项目,碰到一个上传文件的地方,要将显示为的浏览按钮修改为自定义英文的英文按钮Brows,虽说那个按钮会根据系统语言自动切换,但就是在自己电脑上看着不爽,非要改成英文。 大致思想就是... -
如何为Drupal中的按钮或字段设置自定义权限?
2015-10-28 15:25:47<p>I wrote a module for <strong>Drupal</strong> and I have some fields (buttons, image, text).... <p>I want that some fields could be hidden for normal users and open for users when admin let. ... -
QC如何在模块Toolbar上添加自定义按钮
2012-02-17 11:22:00QC如何在模块Toolbar上添加自定义按钮?这听起来是不是很新奇( ⊙o⊙ )哇 没错,接下来带你一起看看如何定制自己的按钮 1、首先,使用QC项目管理员账号进入项目,点击右上角【工具】---> 【自定义】---&... -
qtmessagebox对话框里自定义按钮文本_微信公众号教程系列——自定义菜单设置介绍...
2020-11-26 19:28:062019年6月份,我曾经写过一篇文章《公众号自动回复如何设置》,当时这篇文章很受大家喜欢,粉丝们说我解答的十分详细,一年过去了,仍然有很多人加我询问相关问题,我内心备受鼓舞,我强烈的感受到,优质内容所天生... -
vbs自定义按钮文字_如何使用Divi的主题生成器创建自定义全局页眉
2020-12-06 22:59:05这包括使用Divi的内置选项创建自定义页眉。在本教程中,将重点介绍使用Divi的主题生成器创建全局页眉。除非你为该页面或文章分配了不同的页眉,否则全局页眉将显示在你网站上的所有位置。现在就开始吧!预览在深入... -
如何在bootstrap-table创建的table的状态栏添加自定义按钮?
2019-10-29 09:44:22需要的效果:在下方的表格边上添加自定义按钮,必须与工具栏齐平。 解决方案:添加div(DIV是层叠样式表中的定位技术,全称DIVision,即为划分。有时可以称其为图层。),添加id=”toolbar”属性,在后面的table... -
Qt编写的程序要实现在播放视屏画面的窗口上设置自定义透明按钮,点击按钮实现切换视屏,按钮不能遮挡视屏...
2020-06-23 08:48:35我试了两种方法 方法一:定义好视屏播放窗口后,直接在视屏窗口放置按钮会造成透明按钮遮挡视屏; 方法二:设置3个窗口,底层窗口放地图,中间...两个方法都不行,请教如何解决,是我的代码设置问题还是方法问题? -
步骤条自定义图片_Office 自定义功能区开发中自定义按钮的图标
2021-01-11 18:34:23在office开发中,我们经常会通过自定义功能区的方式进行二次开发,比如请看一下笔者开发的一个日常使用的公文格式处理小功能如下:今天,我们就来给大家讲解一个如何给所开发的按钮设置图标哟。大家应该都知道,... -
MFC 窗口界面如何自定义窗口形状背景,设置自定义的最大化、最小化、关闭按钮的样式!
2012-11-10 17:13:20求高手指教,如果能够顺便介绍一本相关的书更好! -
【Stimulsoft Reports.Net教程】查看器工具栏上的自定义按钮
2018-09-28 11:42:20您可以设置自定义按钮的标题和图标,并添加单击事件。 例如,在工具栏上添加自定义按钮并定义单击事件,在其中显示警报消息。 <%@ Page Language="C#" AutoEventWireup="true" ... -
qt 5 小练习 纯代码制作自定义按钮
2015-11-04 17:37:00大家都知道QT设计师中直接拖动的按钮是长方形带有圆角的图案,那我们如何来设置自定义按钮呢 要设计一个按钮,我们必须要知道按钮有什么属性,首先,按钮必须有一个位置 第二,按钮必须有一个名称。还有当我们... -
WPF创建自定义按钮[2]
2011-11-23 10:43:37下面两个过程将说明如何将类似这样的行为生成到自定义按钮中。我们将从简单的属性触发器开始,然后添加事件触发 器和动画。 设置属性触发器 1. 创建新的属性触发器 :选择“glassCube”,单击 “触发器”面板中... -
SwiftUI如何自定义Button效果设置字体颜色和控制变色效果 中禁用按钮时防止按钮褪色
2020-05-25 12:16:43本文价值与收获 看完本文后,您将能够作出下面的界面 一、Button基础知识 (一)什么是Button Button是触发时执行操作的控件。...(二)Button如何使用 Button是SwiftUI最常用的交互控件,下面就是Butt
收藏数
717
精华内容
286
-
MMM 集群部署实现 MySQL 高可用和读写分离
-
Galera 高可用 MySQL 集群(PXC v5.6 + Ngin
-
2021年中国新跨境出口B2B电商行业研究报告.pdf
-
php接口使用
-
【硬核】一线Python程序员实战经验分享(1)
-
希望一辈子只做一个专业
-
MySQL 触发器
-
ansys electronic 19
-
Amoeba 实现 MySQL 高可用、负载均衡和读写分离
-
机器学习可视化软件机器学习可视化软件
-
第 229 场周赛记录(460 / 3483 )
-
DNAMAN.exe
-
【leetcode】串联所有单词的子串
-
马士兵老师HashMap学习笔记
-
超简单挖矿CryptoTab Browser
-
2019年-华启学院中级通信工程师综合能力真题及答案(完整版).pdf
-
vue3从0到1-超详细
-
MySQL 数据库权限管理(用户高级管理和精确访问控制)
-
vue项目学习笔记(工程化,前后端分离)
-
MySQL 高可用(DRBD + heartbeat)