1. 程式人生 > >EditText(第1章)-簡介以及遊標相關屬性

EditText(第1章)-簡介以及遊標相關屬性

簡書地址:http://www.jianshu.com/users/cfcd1814672c/latest_articles

1. EditText是什麼?

既然是EditText的第一篇,當然應該明白EditText是幹嘛的,瞭解一個控制元件說明,最好的方法就是先看看原始碼的註釋:

EditText的設計初衷:

This is supposed to be a *very* thin veneer over TextView.Do not make any changes here that do anything that a TextView with a key listener and a movement method wouldn't do!

譯:它應該是在TextView的外觀上做了一些特別細小的改動,不能改變任何TextView的關鍵監聽和移動的方法。

EditText的說明:

EditText is a thin veneer over TextView that configures itself to be editable.

譯:EditText是在TextView的外觀配置上做了一些細小的改動,使其可以編輯。

也可以這麼說,EditText就是一個可以編輯的TextView。

總結:EditText是一個可編輯的文字控制元件。

2.EditText的遊標

上面說了EditText是在Text的基礎上做了一些細小的改動,那麼我們看看改動了什麼:

下面是一個簡單的佈局:

<android.support.v7.widget.AppCompatEditText

       android:layout_width="match_parent"

       android:layout_height="wrap_content"

       android:hint="隨便輸"/>

特別說明:這裡的AppCompatEditText是5.0以後為了相容低版本,統一樣式(文字顏色,小大等等)而出現的,當然AppCompatEdit是繼承於EditText的,所以使用的方式是一樣的,推薦使用。

效果圖:


EditText的樣式

可以明顯的看出,有個一閃一閃的豎線-它就是遊標了。我們知道只有在使用者點選了輸入框的時候,遊標才會出現。那麼為什麼我們一進來就可以看到這種效果呢?下面看看原始碼的style:


Edit的Style

看了這個我們明白了:EditText會自動獲取焦點,有焦點的時候遊標才會閃爍

前面幾個屬性相信大家都可看懂,最後2個屬性是在API Level 23(6.0的手機)才能使用的,不是很瞭解。

3.改變遊標的顏色

上面的展示圖的專案是Android studio工程,細心的你一定會發現主題Theme中的colorAccent屬性的顏色正是我們看到的EditText的遊標顏色。改改看看:

<item name="colorAccent">#000000</item>//改為黑色比較明顯

效果:


改變遊標的顏色

顏色是改變了,可是我只想該遊標應該怎麼辦呢?

我們去xml找找方法,輸入一個cursor看看有什麼相關屬性,找到這樣一個方法:

android:textCursorDrawable="@mipmap/ic_launcher"

這裡我們設定一個機器人的圖片看看效果:


改變遊標的樣式

雖然實現了效果不過也是太醜了點,既然是傳入一個圖片,那麼我們就可以使用Shape圖片了


簡單的Drawable檔案

效果:


改變遊標的顏色

這個效果還是可以的,相信到了這裡,你已經可以修改遊標的樣式和顏色了。

特別說明:

設定遊標的顏色和hint文字提示的顏色一致:

android:textCursorDrawable="@null"

如果你對EditText的樣式還是不滿意:

設定背景(這裡就不演示了):

android:background=""//你可以隨心所欲的改

4.改變遊標的位置

有時候我們在專案會有這樣的需求:進入頁面的時候預設給予了文字不需要使用者重複輸入,只需要在後面補充即可,比如輸入網址的時候


需求圖片

因為預設的遊標位置是在左側,這時候我們就需要調整遊標的位置了。

設定游標在右側:

方法1:

etUrl.setSelection(etUrl.getText().length());

方法2:(就是方法1的底層方法)

Editable etext = etUrl.getText();

Selection.setSelection(etext, etext.length());

4.其他屬性

android:cursorVisible="false|true"//是否顯示遊標,基本沒用過

5.總結

通過這個文章我們可以知道

1.EditText是在TextView上做了細小修改的編輯框,它會自動獲得焦點。

2.遊標的樣式和顏色以及位置如何修改

如果你覺得這篇文章對你有幫助,請輕點下面的喜歡,一次就好(多了就取消了-。-)。

這是EditText系列的第一篇之後會慢慢總結有關EditText的知識。如果有相關知識,歡迎大家簡信分享給我,多謝。

相關推薦

EditText1-簡介以及遊標相關屬性

簡書地址:http://www.jianshu.com/users/cfcd1814672c/latest_articles 1. EditText是什麼? 既然是EditText的第一篇,當然應該明白EditText是幹嘛的,瞭解一個控制元件說明,最好的方法就是先

機器學習--周志華1

第1章 緒論 符號學習--->統計機器學習 機器學習中代數一般是作為基礎工具來使用 總結:出頭露面的是概率和統計,埋頭苦幹的是代數和邏輯。 機器學習是關於在計算機上從資料中產生“模型”的演算法,即學習演算法。 學得模型對應了關於資料的某種潛在的規律,因此亦稱“假設”。這

EditText2-對hint進行整容

序 上圖是個簡單的EditText,預設的hint顏色和大小都是系統預設的,下面我準備對EditText的hint進行一個整容小手術。 1.如何改變hint的顏色 手術開始了,第

javascript高階程式設計讀書筆記1 1 JavaScript 簡介

第 1章 JavaScript 簡介 1.1 JavaScript 簡史 1.2 JavaScript 實現 一個完整的 JavaScript 實現應該由下列三 個不同的部分組成(見圖 1-1)。  核心(ECMAScript)  文件物件模型(DOM)

[uboot] uboot流程——命令列模式以及命令處理介紹

轉自https://blog.csdn.net/ooonebook/article/details/53164198   以下例子都以project X專案tiny210(s5pv210平臺,armv7架構)為例 [uboot] uboot流程系列: [project

1、spring cloud---feign+Hystrix熔斷器實現

Feign-Hystrix 因為熔斷只是作用在服務呼叫這一端,因此我們根據上一篇的示例程式碼只需要改動spring-cloud-consumer專案相關程式碼就可以。因為,Feign中已經依賴了Hystrix所以在maven配置上不用做任何改動。 1、配置檔案 application

從《java程式設計基礎》開始學習,學會了if判斷語句,以及快捷判斷賦值

package 第四章;//fliename:App4_1.java public class App4_1 //定義一個類,名字為App4_1 { public static void main(String[] args) { int a=1,b=2,c=3,max,min; //定義一個整形變數a,b,

ASP.NET Core快速入門Jessetalk1:介紹與引入持續更新

課程連結:http://video.jessetalk.cn/course/explore 良心課程,大家一起來學習哈! 任務1:課程介紹 任務2:環境安裝 下載地址:https://dotnet.microsoft.com/download 或者在 VS2017 安裝時勾選 .NET CORE

從零開始的鐳射通訊1 協議棧——3、提取資料包

從零開始的鐳射通訊(第1章 協議棧)——3、提取資料包 github 簡介 函式說明 github https://github.com/HaHaHaHaHaGe/mynetstack 簡介 資料包的提取其實原理並不複雜,就像拼

從零開始的鐳射通訊1 協議棧——2、環形陣列

從零開始的鐳射通訊(第1章 協議棧)——2、環形陣列 github 簡介 函式說明 github https://github.com/HaHaHaHaHaGe/mynetstack 簡介 在說明環形陣列之前,先來看一看通常大家

從零開始的鐳射通訊1 協議棧——1、整體結構

從零開始的鐳射通訊(第1章 協議棧)——1、整體結構 github 簡介 三部分 應用 github https://github.com/HaHaHaHaHaGe/mynetstack 簡介 由於本人比較窮,按理應該先

Beginng_Rust(譯):定義通用函式和結構完+1

在本章中,您將學習: •如何編寫單個函式定義,其呼叫可以有效地處理不同的資料型別 •如何使用型別推斷來避免指定使用的型別 通用功能 •如何編寫單個struct,tuple-struct或enum型別,其例項可以包含有效的不同資料型別 •如何使用兩個重要的標準通用

從零開始的鐳射通訊1 協議棧——4、原始資料編解碼

從零開始的鐳射通訊(第1章 協議棧)——4、原始資料編解碼 github 簡介 移動位置法 提取最高位法 函式說明 github https://github.com/HaHaHaHaHaGe/mynet

Nutch搜尋引擎1_ Nutch簡介及安裝

1、Nutch簡介   Nutch是一個由Java實現的,開放原始碼(open-source)的web搜尋引擎。主要用於收集網頁資料,然後對其進行分析,建立索引,以提供相應的介面來對其網頁資料進行查詢的一套工具。其底層使用了Hadoop來做分散式計算與儲存,索引使用了Solr分散式索引框架來做,Solr是一

SHELL環境變量初識

command include 工作環境 linux 程序 1. 環境變量的概念 環境變量是用來存儲shell會話和工作環境,方便shell輕松訪問到設定值中的程序,環境變量分為全局變量和局部變量2. 全局變量 全局變量在shell和它的子shell中都生效,可以通過env和printen

文件系統管理

文件系統1. linux文件系統類型1.1 日誌文件系統 ext2及之前的文件系統由於是通過索引節點表來關聯硬盤上的數據塊,所以如果數據正在寫入時斷電或系統崩潰很可能導致當前的文件系統崩潰,為了避免這種情況,在ext3開始的文件系統支持日誌功能,數據在寫入時會先寫入臨時文件(journal)中,待數據全部寫入

程序包管理與程序編譯安裝

程序包管理1. 程序包管理工具1.1 dpkg包管理工具 dpkg為基於debian發行版中的程序包管理工具,例如Ubuntu、linxu mint。 aptitude:軟件包管理系統,直接輸入此命令可進入包管理的視圖 dpkg -L Package_Name:列出指定軟件包所包含的全部文件 dpkg -

Redis 設計與實現 -- 整數集合intset

相同 spa edi redis cnblogs 保存 空間 數值 一個數 概述 1.intset概述 2.intset實現 3.intset升級 intset概述 整數集合是Redis集合鍵的底層實現之一,當值都為整數時,redis就會選擇整數集合作為底層實現。 可以保

Redis 設計與實現 -- 數據庫

resize ger think contex sta 占用 return bsp null 概述 1.數據庫結構 2.數據庫鍵空間 3.鍵生存時間 4.持久化對過期鍵處理 5.數據庫通知 1.數據庫結構 Redis服務器將所有server狀態都保存在數據結構

Redis 設計與實現 -- 持久化RBD

key fork amount del pty str server int name 概述 Redis為內存數據庫,即所有的鍵值對信息保存在內存中,那麽一旦服務器出現問題重啟,內存中的數據就會沒有了。所以Redis需要實現持久化,將內存中的數據持久化到硬盤,在重新啟動後