網站首頁 編程語言 正文
基本框架
<?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"> <Button android:layout_width="200dp" android:layout_height="100dp"/> </LinearLayout>
基本屬性
在上面的xml
文件中Ctrl+左鍵點進Button
可以看到該類是繼承自TextView
類的,也就是說在TextView
部分講到的都可以用在Button
上。
文本與背景
在這里我們就簡單的設置下按鈕上的文本為"Push Me",背景顏色設置為紫色(這兩個資源都被保存在values
文件夾的三個xml
文件里),但奇怪的是文本都被強制轉換成了大寫,而設置背景也無效。
主題修改
問題出在主題文件themes.xml
上,我們需要進入該文件,將textAllCaps
設為false
,就可以取消強制大寫,即加入下面的代碼:
<item name="textAllCaps">true</item>
然后我們還需要把基礎主題文件由
<style name="Theme.MyButton" parent="Theme.MaterialComponents.DayNight.DarkActionBar">
改為
<style name="Theme.MyButton" parent="Theme.MaterialComponents.DayNight.DarkActionBar.Bridge">
這樣就可以讓我們的設置生效了:
雖然設置了按鈕的基本屬性,但是現在這個按鈕看上去跟TextView
也沒什么區別,點擊也毫無反應,接下來我們就要設置一下點擊效果。
點擊效果
本次要實現的效果主要是點擊以后按鈕的背景隨之更換,所以我們在res
->drawable
文件夾下新建一個Drawable Resource文件,起名為background_shift
。可以看到,該文件的根節點為圖片選擇器selector
。
圖片變換
然后我們加入一點圖片資源,點擊res
,右鍵new
->Vector Asset
,進入這個界面后點擊Clip Art
選擇一個喜歡的圖標,比如我選擇了WiFi:
同時我另導入了一張WiFi關閉的圖標。
導入后,就可以在background_shift
文件中使用了,在這里我通過state_pressed
設置按下時顯示WiFi,不按下時顯示WiFi關閉,代碼如下:
<?xml version="1.0" encoding="utf-8"?> <selector xmlns:android="http://schemas.android.com/apk/res/android"> <item android:drawable="@drawable/ic_baseline_wifi_24" android:state_pressed="true"/> <item android:drawable="@drawable/ic_baseline_wifi_off_24" android:state_pressed="false"/> </selector>
寫好了background_shift.xml
,就可以在activity_main.xml
中使用了,將Button
的background
屬性設置為該資源即可實現背景變換。
顏色變換
做顏色變換與圖像變換類似,不同之處在于資源存放位置不同。在res
文件夾,我們新建一個color
文件夾,右擊rec
,在new
->Directory
中新建文件夾,取名color
之后在color
中也建立一個Drawable Resource文件,然后設定按下時為藍色,默認為紅色:
<?xml version="1.0" encoding="utf-8"?> <selector xmlns:android="http://schemas.android.com/apk/res/android"> <item android:color="#ff0000ff" android:state_pressed="true"/> <item android:color="#ffff0000"/> </selector>
有了這個顏色變換文件,我們就可以在activity_main.xml
中將Button
的backgroundTint
設置為該資源從而實現顏色變換。
除了背景顏色,還有foregroud
前景色,這個是最上層的顏色,會覆蓋整個圖層,不常用。
總結
原文鏈接:https://blog.csdn.net/ShadyPi/article/details/122548605
相關推薦
- 2022-10-11 關于401狀態碼的含義和處理方式_相關技巧
- 2022-11-29 C#中各種泛型集合的使用方法總結_C#教程
- 2021-11-12 C++?路徑中./、../、/代表的含義_C 語言
- 2022-02-20 Spring Boot 打包報錯Failed to execute goal org.apache.
- 2022-09-19 用正則表達式匹配字符串中漢字及中文標點符號_正則表達式
- 2022-05-25 Flutter?StaggeredGridView實現瀑布流效果_Android
- 2022-10-10 React實時預覽react-live源碼解析_React
- 2022-08-07 C#實現關機功能_C#教程
- 最近更新
-
- window11 系統安裝 yarn
- 超詳細win安裝深度學習環境2025年最新版(
- Linux 中運行的top命令 怎么退出?
- MySQL 中decimal 的用法? 存儲小
- get 、set 、toString 方法的使
- @Resource和 @Autowired注解
- Java基礎操作-- 運算符,流程控制 Flo
- 1. Int 和Integer 的區別,Jav
- spring @retryable不生效的一種
- Spring Security之認證信息的處理
- Spring Security之認證過濾器
- Spring Security概述快速入門
- Spring Security之配置體系
- 【SpringBoot】SpringCache
- Spring Security之基于方法配置權
- redisson分布式鎖中waittime的設
- maven:解決release錯誤:Artif
- restTemplate使用總結
- Spring Security之安全異常處理
- MybatisPlus優雅實現加密?
- Spring ioc容器與Bean的生命周期。
- 【探索SpringCloud】服務發現-Nac
- Spring Security之基于HttpR
- Redis 底層數據結構-簡單動態字符串(SD
- arthas操作spring被代理目標對象命令
- Spring中的單例模式應用詳解
- 聊聊消息隊列,發送消息的4種方式
- bootspring第三方資源配置管理
- GIT同步修改后的遠程分支