Android開(kāi)發(fā)者常見(jiàn)的UI組件總結(jié)大全
TextView 文本視圖
設(shè)置字體大小:android:textSize="20sp" 用sp
設(shè)置顏色:android:textColor="#00ffff"
設(shè)置倍距(行距):android:lineSpacingMultiplier="2"
設(shè)置具體行距:android:lineSpacingExtra="15sp" 與倍距只可取其一
過(guò)長(zhǎng)文本的處理方式:
1.在外面添加滾動(dòng)條,注意,一個(gè)滾動(dòng)條里面只能添加一個(gè)子控件
2.省略過(guò)長(zhǎng)部分,取消換行部分
省略過(guò)長(zhǎng)部分:
1.android:singleLine="true" 后面加省略號(hào) android:ellipsize="middle" 設(shè)置省略號(hào)的位置
2.android:lines="1" 設(shè)置單行 后面加句號(hào)
<TextView
android:layout_width="match_parent"
android:layout_height="match_parent"
android:textSize="20sp"
android:textColor="#00ffff"
android:lineSpacingMultiplier="2"
android:text="@string/long_text"/>eg:跑馬燈
跑馬燈,一個(gè)頁(yè)面只有一個(gè)跑馬燈生效,因?yàn)樗枰@取焦點(diǎn)
android:ellipsize="marquee" 設(shè)置跑馬燈形式
android:focusable="true" 設(shè)置可以獲取焦點(diǎn)
android:focusableInTouchMode="true" 設(shè)置在觸摸時(shí)獲取焦點(diǎn)
android:marqueeRepeatLimit="marquee_forever" 設(shè)置跑馬燈時(shí)長(zhǎng)
<TextView android:layout_width="match_parent" android:layout_height="match_parent" android:textSize="20sp" android:textColor="#00ffff" android:singleLine="true" android:ellipsize="marquee" android:focusable="true" android:focusableInTouchMode="true" android:marqueeRepeatLimit="marquee_forever" android:text="@string/long_text"/>
string類中定義的長(zhǎng)文本
<string name="long_text"> 洞穴昏暗潮濕,被植物發(fā)出的微弱熒光照亮。
石壁上纏繞著藤蔓,墨綠,深紫,濃黑,像大團(tuán)的、糾纏的蛇。
一只黑色的飛蟲跌跌撞撞闖入,它長(zhǎng)著六只堅(jiān)硬的翅膀,有三個(gè)口器。
下一秒,糾纏的藤蔓間忽然出現(xiàn)一個(gè)巨大的深紫色膨起,它迅速裂開(kāi),像張開(kāi)了一張嘴,在下一刻瞬間合攏,將飛蟲吞入腹中。
藤蔓群緩緩蠕動(dòng)起來(lái),膨起的那部分逐漸回收,恢復(fù)到原本的狀態(tài)。
洞穴里響起仿佛翅膀扇動(dòng)的聲音,一滴粘液拖曳著半透明的細(xì)絲從洞穴頂端落下來(lái),啪嗒一聲落進(jìn)地面黏膩的苔蘚里,它們細(xì)微地蠕動(dòng)起來(lái),這滴閃光的粘液很快被吸收殆盡,在地面消失了蹤影。
角落——被綠色真菌發(fā)出的熒光照亮的角落。巖石與土壤的縫隙里,白色像潮水一樣涌出來(lái),覆蓋了大片的區(qū)域,是雪白的菌絲。它生長(zhǎng),蔓延,伸出數(shù)以億計(jì)的觸角,最后向著中央蠕動(dòng)而去,合攏,聚集,拉長(zhǎng),一個(gè)形體出現(xiàn)。一只腳踏上厚重軟膩的苔蘚,苔蘚陷下去吞沒(méi)了它,只露出雪白的腳踝。
安折看自己的腳踝——屬于人類的肢體,由骨架、肌肉和血管支撐起來(lái)的肢體,關(guān)節(jié)可以活動(dòng),但因骨骼的限制并不靈活。角質(zhì)層構(gòu)成指甲,圓潤(rùn)透明,是退化的產(chǎn)物,來(lái)自獸類鋒利的爪尖。
他抬起腿,邁出一步,先前因被踩而凹陷的苔蘚濕涼且富有彈性,在他離開(kāi)后重新聚攏起來(lái),像豎立的蚯蚓。
這一次,他腳下踩到了別的東西,是一具人類骨骼的手臂。
昏暗中,安折望向那具骷髏。
</string>ImageView
- android:adjustViewBounds:設(shè)置ImageView是否調(diào)整自己的邊界來(lái)保持所顯示圖片的長(zhǎng)寬比。
- android:maxHeight:設(shè)置ImageView的最大高度。
- android:maxWidth:設(shè)置ImageView的最大寬度。
- android:scaleType:設(shè)置所顯示的圖片如何縮放或移動(dòng)以適應(yīng)ImageView的大小。
•matrix:使用matrix方式進(jìn)行縮放。
•fitXY:橫向、縱向獨(dú)立縮放,以適應(yīng)該ImageView。
•fitStart:保持縱橫比縮放圖片,并且將圖片放在ImageView的左上角。
•fitCenter:保持縱橫比縮放圖片,縮放完成后將圖片放在ImageView的中央。
•fitEnd:保持縱橫比縮放圖片,縮放完成后將圖片放在ImageView的右下角。
•center:把圖片放在ImageView的中央,但是不進(jìn)行任何縮放。
•centerCrop:保持縱橫比縮放圖片,以使圖片能完全覆蓋ImageView。
•centerInside:保持縱橫比縮放圖片,以使得ImageView能完全顯示該圖片。
- android:src:設(shè)置ImageView所顯示的Drawable對(duì)象的ID。
ImageButton
ImageButton繼承與ImageView;
Button可以顯示圖片也可以顯示文本,而ImageButton只能顯示圖片;
ImageButton中的圖片可以按比例縮放;
Button只能設(shè)置一張圖片,而ImageButton可以設(shè)置前景和背景兩張圖片重疊的效果
EditView
<EditText
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_marginLeft="30dp"
android:layout_marginRight="30dp"
android:layout_marginTop="20dp"
android:background="@color/design_default_color_secondary"
android:gravity="center"
android:inputType="number"
android:maxLength="12"
android:hint="賬號(hào)"/>
<EditText
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_marginLeft="30dp"
android:layout_marginRight="30dp"
android:layout_marginTop="20dp"
android:gravity="center_horizontal"
android:background="@color/design_default_color_secondary"
android:inputType="textPassword"
android:hint="密碼"/>
Button
CheckBox 多選按鈕
CheckBox繼承CompoundButton,是多選按鈕。android:checked設(shè)置按鈕是否選中。
setOnCheckedChangeListener(OnCheckedChangeListener)來(lái)對(duì)多選按鈕進(jìn)行監(jiān)聽(tīng)。- boolean isChecked() 判斷當(dāng)前按鈕是否選中
- void.setChecked(boolean checked) 設(shè)置按鈕是否勾選
CheckBox checkBox = findViewById(R.id.checkBox1);
// 設(shè)置選中狀態(tài)
checkBox.setChecked(false);
// checkBox.isChecked() 獲取選中狀態(tài)
boolean isChecked = checkBox.isChecked();
Log.e("isChecked","當(dāng)前復(fù)選框選中狀態(tài):"+isChecked);
// 監(jiān)聽(tīng)狀態(tài)變化 setOnCheckedChangeListener() 方法
checkBox.setOnCheckedChangeListener(new CompoundButton.OnCheckedChangeListener() {
@Override
public void onCheckedChanged(CompoundButton buttonView, boolean isChecked) {
Log.e("isChecked","當(dāng)前復(fù)選框選中狀態(tài):"+isChecked);
}
});RadioButton 單選按鈕
單選控件和 RadioGroup 一起使用, 在一個(gè) RadioGroup 中只能選中一個(gè)
android:checkedButton指定初始選項(xiàng)。RadioGroup 添加監(jiān)聽(tīng)器:setOnCheckedChangeListener(OnCheckedChangeListener)
<?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=".RadioButtonActivity">
<RadioGroup
android:layout_width="match_parent"
android:layout_height="400dp"
android:background="@color/cardview_shadow_start_color">
<RadioButton
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="111"/>
<RadioButton
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="222"/>
<RadioButton
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="333"/>
<RadioButton
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="444"/>
</RadioGroup>
</LinearLayout>radioGroup = findViewById(R.id.radioGroupId);
radioGroup.setOnCheckedChangeListener(new RadioGroup.OnCheckedChangeListener() {
@Override
// checkedId 是選中的 RadioButton 的id
public void onCheckedChanged(RadioGroup group, int checkedId) {
// 找到選中的 RadioButton
RadioButton radioButton = findViewById(checkedId);
Toast.makeText(RadioButtonActivity.this, "當(dāng)前選中的單選項(xiàng):"+radioButton.getText(), Toast.LENGTH_SHORT).show();
}
});ToggleButton 開(kāi)關(guān)觸發(fā)器
<ToggleButton
android:id="@+id/toggleButton1"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_gravity="center"
android:textOff="關(guān)閉了"
android:textOn="打開(kāi)了"
android:checked="true"
android:text="ToggleButton" />
SeekBar 滑動(dòng)條
android:max=“255” (最大的滑動(dòng)值,從0開(kāi)始)
android:progress=“255”(初始時(shí)滑動(dòng)條的位置)
<SeekBar
android:id="@+id/seekBar"
android:max="100"
android:progress="30"
android:layout_width="match_parent"
android:layout_height="wrap_content" />public class RadioButtonActivity extends AppCompatActivity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_radio_button);
SeekBar seekBar = findViewById(R.id.seekBar);
// 設(shè)置最大值
seekBar.setMax(50);
// 設(shè)置當(dāng)前進(jìn)度
seekBar.setProgress(40);
seekBar.setOnSeekBarChangeListener(new SeekBar.OnSeekBarChangeListener() {
// 進(jìn)度改變時(shí)(過(guò)程中)的回調(diào)方法
@Override
public void onProgressChanged(SeekBar seekBar, int progress, boolean fromUser) {
Log.e("seekBar change","當(dāng)前seekBar的進(jìn)度:"+progress);
}
// 開(kāi)始時(shí)回調(diào)的方法
@Override
public void onStartTrackingTouch(SeekBar seekBar) {
Log.e("seekBar開(kāi)始了","當(dāng)前seekBar的進(jìn)度:"+seekBar.getProgress());
}
// 結(jié)束時(shí)回調(diào)的方法
@Override
public void onStopTrackingTouch(SeekBar seekBar) {
Log.e("seekBar結(jié)束了","當(dāng)前seekBar的進(jìn)度:"+seekBar.getProgress());
}
});
}
}ProgressBar 進(jìn)度條
<?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=".ProgressBarActivyty">
<!--
ProgressBar 的默認(rèn)形式是轉(zhuǎn)圈圈
style="?android:attr/progressBarStyleHorizontal" style 設(shè)置風(fēng)格
android:max="100" 進(jìn)度條的最大值
android:indeterminate="true" 永恒滾動(dòng)
android:progress="10" 已完成進(jìn)度
-->
<ProgressBar
android:layout_width="wrap_content"
android:layout_height="wrap_content"/>
<ProgressBar
android:layout_width="300dp"
android:layout_height="wrap_content"
android:progress="10"
android:max="100"
style="?android:attr/progressBarStyleHorizontal"/>
<ProgressBar
android:id="@+id/progress"
android:layout_width="300dp"
android:layout_height="wrap_content"
android:progress="10"
android:max="100"
android:indeterminate="true"
style="?android:attr/progressBarStyleHorizontal"/>
<ProgressBar
android:id="@+id/progress1"
android:layout_width="300dp"
android:layout_height="wrap_content"
android:max="100"
style="?android:attr/progressBarStyleHorizontal"/>
</LinearLayout>public class ProgressBarActivyty extends AppCompatActivity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_progress_bar);
ProgressBar progressBar1 = findViewById(R.id.progress1);
// 設(shè)置progressBar進(jìn)度
// progressBar1.setProgress(80);
// 通過(guò)代碼控制進(jìn)度--- 利用線程
// 但是在Android 4.0 之后不能在線程中直接操縱控件,會(huì)崩潰。progressBar是一個(gè)特例
new Thread(){
public void run(){
for (int i = 1; i <= 100 ; i++) {
progressBar1.setProgress(i);
try {
// 休眠一下
Thread.sleep(30);
} catch (InterruptedException e) {
throw new RuntimeException(e);
}
}
}
}.start();
}
}共有屬性
margin: 外邊距,控件的外部邊緣距離其父容器邊緣的距離
padding: 內(nèi)邊距,控件內(nèi)部的控件距離它邊緣的邊距
gravity:控件內(nèi)部的控件相對(duì)于它的位置
layout_gravity:控件本身相對(duì)于父容器的位置
visibility: 可見(jiàn)狀態(tài) gone(不可見(jiàn)也不保留位置) visible(可見(jiàn)) invisible(不可見(jiàn)但保留位置)
總結(jié)
到此這篇關(guān)于Android開(kāi)發(fā)者常見(jiàn)的UI組件總結(jié)的文章就介紹到這了,更多相關(guān)Android常見(jiàn)UI組件內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
Android編程實(shí)現(xiàn)獲取新浪天氣預(yù)報(bào)數(shù)據(jù)的方法
這篇文章主要介紹了Android編程實(shí)現(xiàn)獲取新浪天氣預(yù)報(bào)數(shù)據(jù)的方法,涉及Android基于新浪接口的調(diào)用及數(shù)據(jù)處理技巧,具有一定參考借鑒價(jià)值,需要的朋友可以參考下2015-11-11
Android控件Chronometer定時(shí)器的實(shí)現(xiàn)方法
這篇文章主要為大家詳細(xì)介紹了Android控件Chronometer定時(shí)器的實(shí)現(xiàn)方法,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2016-11-11
Android 從底部彈出Dialog(橫向滿屏)的實(shí)例代碼
在android開(kāi)發(fā)中經(jīng)常會(huì)遇到底部彈出框的功能,今天小編抽時(shí)間給大家整理一個(gè)底部彈出橫向滿屏的dialog,需要的朋友參考下2016-11-11
Android實(shí)現(xiàn)靜默安裝實(shí)例代碼
本篇文章主要介紹了Android實(shí)現(xiàn)靜默安裝實(shí)例代碼,小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過(guò)來(lái)看看吧2017-06-06
Android中ConstraintLayout約束布局的最全詳細(xì)解析
ConstraintLayout是Google在Google?I/O?2016大會(huì)上發(fā)布的一種新的布局容器(ViewGroup),它支持以靈活的方式來(lái)放置子控件和調(diào)整子控件的大小,下面這篇文章主要給大家介紹了關(guān)于Android中ConstraintLayout約束布局詳細(xì)解析的相關(guān)資料,需要的朋友可以參考下2022-08-08
Android 實(shí)現(xiàn)視頻字幕Subtitle和橫豎屏切換示例
下面小編就為大家分享一篇Android 實(shí)現(xiàn)視頻字幕Subtitle和橫豎屏切換示例,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧2018-01-01
android使用ViewPager組件實(shí)現(xiàn)app引導(dǎo)查看頁(yè)面
這篇文章主要為大家詳細(xì)介紹了android使用ViewPager組件實(shí)現(xiàn)app引導(dǎo)查看頁(yè)面,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2018-07-07

