版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認領(lǐng)
文檔簡介
Android的布局與基本UI
2.1任務1-按鈕Button與文本TextView的互動21線性布局的初步使用2按鈕點擊事件處理3Toast的使用4隨機整數(shù)的使用線性布局LinearLayout方向控制android:orientationvertical,垂直線性布局,依次從上往下放horizontal,水平線性布局,依次從左往右方尺寸屬性android:layout_widthandroid:layout_heightmatch_parent與父視圖(父容器)匹配尺寸(占據(jù)父容器的剩余空間)wrap_content包圍內(nèi)容,寬或高由內(nèi)容決定絕對值,使用相對像素,例如100dp注意事項當尺寸屬性設置為match_parent,將使得同級后續(xù)UI被擠出容器不可見3常用快捷鍵1Ctrl+Shift+Space(Ctrl+Alt+Space):代碼智能自動填充。Alt+Enter:快速修復錯誤,使用時鼠標須定位到提示錯誤的地方。Alt+Insert:代碼生成器,例如構(gòu)造方法、類成員變量的getter和setter方法、方法重寫、接口實現(xiàn)、toString()方法等。Ctrl+Alt+T:調(diào)出try-catch、if、for等代碼模板,先選中需要使用模板的代碼,再使用快捷鍵。Ctrl+D:快速復制當前行代碼。Ctrl+鼠標左鍵:跳轉(zhuǎn)到定義處。Ctrl+Alt+左箭頭:跳轉(zhuǎn)到上次編輯處。Ctrl+Alt+V:將當前賦值或者方法調(diào)用的返回值賦為局部變量(V:Variable),使用頻率極高,大大提高編程效率。Ctrl+Alt+F:將當前賦值或者方法調(diào)用的返回值賦為成員變量(F:Field)。Ctrl+Alt+M:將選中的代碼塊提取成一個方法(M:Method)。4常用快捷鍵2Ctrl+P:查看方法的參數(shù)信息。Ctrl+Q:調(diào)出幫助信息,例如方法的使用文檔和參數(shù)說明,返回值定義等。Shift+F6智能重命名,相關(guān)變量或者類會自動改名。Ctrl+/:當前行代碼注釋與反注釋。Ctrl+Shift+/:選中代碼塊注釋與反注釋。Ctrl+Alt+L:代碼格式化,將代碼縮進等調(diào)整得更加美觀。Ctrl+O:顯示父類所有可改寫的方法,包括接口方法。Ctrl+Alt+O:優(yōu)化代碼導入包,刪除未被使用的包。F8:單步調(diào)試(StepOver),當前代碼單行執(zhí)行,若是方法調(diào)用,則執(zhí)行方法直至方法返回。F7:單步調(diào)試(StepInto),若是單行賦值代碼與F8相同,若是方法調(diào)用,則會跳入方法,執(zhí)行所調(diào)用方法的首行代碼并暫停。Alt+F9:執(zhí)行到光標處。Alt+F8:彈出表達式窗口,可對對象進行表達式運算。F9:全速運行,若遇到下一個斷點,則暫停到下一個斷點,在調(diào)試中常和F8、斷點等配合使用。5按鈕Button的點擊事件偵聽直接對Button對象設置點擊偵聽,并匿名實現(xiàn)點擊偵聽接口對MainActivity類寫B(tài)utton的偵聽接口實現(xiàn),并將偵聽接口指向MainActivity實例在XML中設置Button的點擊偵聽方法6bt.setOnClickListener(newView.OnClickListener(){
@Override
publicvoidonClick(Viewview){
//點擊事件處理
}
});publicclassMainActivityextendsAppCompatActivityimplementsView.OnClickListener{
@Override
protectedvoidonCreate(BundlesavedInstanceState){
super.onCreate(savedInstanceState);
setContentView(R.layout.my_main);
Buttonbt=findViewById(R.id.button);
bt.setOnClickListener(this);
}
@Override
publicvoidonClick(Viewv){
//Button點擊回調(diào)
}
}publicclassMainActivityextendsAppCompatActivity{
@Override
protectedvoidonCreate(BundlesavedInstanceState){
super.onCreate(savedInstanceState);
setContentView(R.layout.my_main);
}
publicvoidbuttonOnclick(Viewview){
//XML中定義的Button點擊回調(diào)方法
}
}<Button…android:onClick="buttonOnClick"…/>文本框不可編輯文本框TextViewandroid:textColor設置字體顏色(引用顏色或者#RRGGBB)android:textSize設置字體大?。▎挝皇褂胹p)android:autoLink智能文本鏈接phone識別電話號碼web識別網(wǎng)址all識別所有鏈接可編輯文本框EditTextandroid:ems在寬度為wrap_content時生效,控制寬度,單位為字符android:inputType設置輸入類型android:hint設置提示信息,當EditText清空時顯示hint信息Toast彈出提示框Toast.makeText(android.content.Contextcontext,CharSequencetext,intduration).show()context:指MainActivity.thistext:顯示的內(nèi)容duration:Toast.LENGTH_LONG,Toast.LENGTH_SHORT7任務1實現(xiàn)-布局my_main.xml8<LinearLayoutxmlns:android="/apk/res/android"
android:orientation="vertical"
android:layout_width="match_parent"
android:layout_height="match_parent">
<!--根節(jié)點:垂直的線性布局,占據(jù)整個屏幕高度和寬度-->
<TextView
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:text="你的個人信息"/>
<!--文本框,寬度與線性容器同寬,等同于與屏幕同寬,由內(nèi)容決定高度-->
<!--注釋只能在UI標簽之外,可用“ctr+/”快捷鍵-->
<Button
android:id="@+id/button"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:text="生成隨機數(shù)"/>
<!--按鈕Button,并使用android:id屬性創(chuàng)建了id,在代碼中可用R.id.button引用該UI-->
<TextView
android:id="@+id/tv_result"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:text=""/>
<!--第二個TextView在代碼中可用R.id.tv_result引用-->
</LinearLayout>任務1實現(xiàn)-MainActivity.java9publicclassMainActivityextendsAppCompatActivity{
intcount=0;
//TextViewtv=findViewById(R.id.tv_result);
@Override
protectedvoidonCreate(BundlesavedInstanceState){
super.onCreate(savedInstanceState);
setContentView(R.layout.my_main);
//設置布局文件,將res/layout/my_main.xml作為布局文件
//通過setContentView()方法設置視圖之后才能通過findViewById()從Activity視圖中找UI
finalTextViewtv=findViewById(R.id.tv_result);
//R.id.tv_result是my_main.xml布局文件中的一個TextView
//使用final關(guān)鍵詞是因為tv是局部變量,只能在onCreate()中訪問
//若要在該函數(shù)的匿名函數(shù)中訪問,可將tv設為全局變量或者final局部變量
Buttonbt=findViewById(R.id.button);
bt.setOnClickListener(newView.OnClickListener(){
@Override
publicvoidonClick(Viewview){
inti=newRandom().nextInt(1000);//利用隨機函數(shù)產(chǎn)生一個[0,999]的整型隨機數(shù)
tv.setText(""+i);//字符串“”與i通過+拼接運算,自動將i變量轉(zhuǎn)為對應字符串
Strings=String.format("第%d次按鈕",++count);//String.format相當于C語言的sprintf
Toast.makeText(MainActivity.this,s,Toast.LENGTH_SHORT).show();//Toast顯示內(nèi)容
}
});
}
}Android項目的存儲瘦身10刪除的目錄.gradle(注意不是gradle).ideaapp/build瘦身效果能大大減小項目大小Android項目的出錯排查11publicclassMainActivityextendsAppCompatActivity{
intcount=0;
TextViewtv=findViewById(R.id.tv_result);
@Override
protectedvoidonCreate(BundlesavedInstanceState){
super.onCreate(savedInstanceState);
setContentView(R.layout.my_main);
Buttonbt=findViewById(R.id.button);
bt.setOnClickListener(newView.OnClickListener(){
@Override
publicvoidonClick(Viewview){
inti=newRandom().nextInt(1000);//利用隨機函數(shù)產(chǎn)生一個[0,999]的整型隨機數(shù)
tv.setText(""+i);//字符串“”與i通過+拼接運算,自動將i變量轉(zhuǎn)為對應字符串
Strings=String.format("第%d次按鈕",++count);//String.format相當于C語言的sprintf
Toast.makeText(MainActivity.this,s,Toast.LENGTH_SHORT).show();//Toast顯示內(nèi)容
}
});
}
}利用Logcat窗口能看到程序出錯的原因和出錯處的代碼(藍色鏈接)本程序出錯,tv不能在成員變量中初始化,因為此時尚未調(diào)用onCreate()方法,沒有視圖,無法找到相關(guān)UI,導致tv為null2.2任務2-布局對齊gravity與layout_gravity121UI內(nèi)部對齊gravity2UI與父容器對齊layout_gravity3layout_gravity的使用條件父容器方向與對齊方向正交對齊常用屬性left:左對齊;right:右對齊;start:取決于語言習慣,若是從左到右的文字順序則等效于左對齊,反之則右對齊;end:與start相對應,為start的相反方向;top:頂部對齊;bottom:底部對齊;center:上下左右居中對齊;center_horizontal:水平居中對齊;center_vertical:垂直居中對齊。13任務2實現(xiàn)-布局文件my_main.xml14<LinearLayoutxmlns:android="/apk/res/android"
android:orientation="vertical"
android:layout_width="match_parent"
android:layout_height="match_parent">
<TextView
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:text="YournameandID"/>
<Button
android:id="@+id/button"
android:layout_width="200dp"
android:layout_height="wrap_content"
android:layout_gravity="right"
android:text="Layout_gravity"/>
<Button
android:id="@+id/button2"
android:layout_width="200dp"
android:gravity="right"
android:layout_height="wrap_content"
android:text="Gravity"/>
</LinearLayout>思考將第一個Button通過layout_gravity設置為底部對齊,能否實現(xiàn)?為什么?2.3任務3-UI的權(quán)重控制151layout_weight控制寬度或者高度由什么決定2權(quán)重控制的是剩余空間權(quán)重控制什么時候失效3如何實現(xiàn)UI的絕對等比分配不同寬度下權(quán)重的控制效果16<LinearLayoutxmlns:android="/apk/res/android"
android:orientation="vertical"
android:layout_width="match_parent"
android:layout_height="match_parent">
<LinearLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:orientation="horizontal">
<EditText
android:id="@+id/editTextTextPersonName"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_weight="1"
android:inputType="textPersonName"
android:text="1234567890"/>
<EditText
android:id="@+id/editTextTextPersonName2"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_weight="1"
android:inputType="textPersonName"
android:text="1"/>
</LinearLayout><LinearLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:orientation="horizontal">
<EditText
android:id="@+id/editTextTextPersonName3"
android:layout_width="0dp"
android:layout_height="wrap_content"
android:layout_weight="1"
android:ems="10"
android:inputType="textPersonName"
android:text="1234567890"/>
<EditText
android:id="@+id/editTextTextPersonName4"
android:layout_width="0dp"
android:layout_height="wrap_content"
android:layout_weight="1"
android:ems="10"
android:inputType="textPersonName"
android:text="1"/>
</LinearLayout>
</LinearLayout>任務3的布局文件my_main.xml17<?xmlversion="1.0"encoding="utf-8"?>
<LinearLayoutxmlns:android="/apk/res/android"
android:orientation="vertical"
android:layout_width="match_parent"
android:layout_height="match_parent">
<EditText
android:id="@+id/et1"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:hint="To"
android:ems="10"
android:inputType="phone"
android:text=""/>
<!--android:inputType="phone"控制文本框鍵盤為電話號碼型鍵盤-->
<EditText
android:id="@+id/et2"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:ems="10"
android:hint="Subject"
android:inputType="text"
android:text=""/>
<!--android:inputType="text"控制文本框為文本鍵盤--><EditText
android:id="@+id/et3"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:ems="10"
android:hint="Message"
android:gravity="top"
android:inputType="text"
android:layout_weight="3"
android:text=""/>
<!--et3與TextView通過權(quán)重控制,按3:1占據(jù)線性布局剩余高度-->
<Button
android:id="@+id/button"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:text="send"/>
<TextView
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_weight="1"
android:text="YournameandID"/>
</LinearLayout>2.4任務4-單選框RadioButton181RadioGroup容器RadioButton單選框2RadioGroup事件處理3findViewById()靈活使用RadioGroup的使用要點android:orientation屬性horizontal控制組內(nèi)RadioButton按水平方向依次放置RadioButton往往還需要layout_weight屬性控制寬度權(quán)重vertical控制組內(nèi)RadioButton按垂直方向依次放置事件處理setOnCheckedChangeListener()方法,偵聽選中狀態(tài)改變偵聽回調(diào)方法
publicvoidonCheckedChanged(RadioGroupgroup,intcheckedId)checkedId:被選中的RadioButton的id,可配合findViewById()方法得到選中的對象19實現(xiàn)布局my_main.xml20<LinearLayoutxmlns:android="/apk/res/android"
android:orientation="vertical"
android:layout_width="match_parent"
android:layout_height="match_parent">
<TextView
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:text="YournameandID"/>
<RadioGroup
android:id="@+id/radio_group"
android:layout_width="match_parent"
android:orientation="horizontal"
android:layout_height="wrap_content">
<!--須給RadioGroup創(chuàng)建id屬性,設置方向?qū)傩詾樗椒较颍⒁飧叨仁莣rap_content-->
<RadioButton
android:id="@+id/rb1"
android:layout_width="0dp"
android:layout_height="wrap_content"
android:layout_weight="1"
android:text="爬山"/>
<RadioButton
android:id="@+id/rb2"
android:layout_width="0dp"
android:layout_weight="1"
android:layout_height="wrap_content"
android:text="跑步"/>
<RadioButton
android:id="@+id/rb3"
android:layout_width="0dp"
android:layout_weight="1"
android:layout_height="wrap_content"
android:text="游泳"/>
<!--利用layout_width="0dp"和android:layout_weight="1"控制UI寬度比例-->
</RadioGroup>
<TextView
android:id="@+id/tv_result"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:text=""/>
</LinearLayout>實現(xiàn)MainActivity21publicclassMainActivityextendsAppCompatActivity{
@Override
protectedvoidonCreate(BundlesavedInstanceState){
super.onCreate(savedInstanceState);
setContentView(R.layout.my_main);
RadioGrouprg=findViewById(R.id.radio_group);
//利用RadioGroup對選中事件進行偵聽
TextViewtv=findViewById(R.id.tv_result);
//AndroidStudio2021版中,變量tv無需聲明為final
rg.setOnCheckedChangeListener(newRadioGroup.OnCheckedChangeListener(){
@Override
publicvoidonCheckedChanged(RadioGroupgroup,intcheckedId){
RadioButtonrb=findViewById(checkedId);
//checkedId是被選中的RadioButton對象的id
//利用findViewById()方法和參數(shù)checkedId,關(guān)聯(lián)對應RadioButton
tv.setText(rb.getText());
//通過RadioButton對象的getText()方法獲取文本并賦給tv
}
});
}
}2.5任務5-多選框CheckBox221多選框與單選框的區(qū)別2CheckBox對象響應事件3MainActivity響應CheckBox事件實現(xiàn)布局my_main.xml23<LinearLayoutxmlns:android="/apk/res/android"
android:orientation="vertical"
android:layout_width="match_parent"
android:layout_height="match_parent">
<TextView
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:text="YournameandID"/>
<LinearLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:orientation="horizontal">
<!--注意水平LinearLayout的高度是wrap_content-->
<CheckBox
android:id="@+id/cb1"
android:layout_width="0dp"
android:layout_height="wrap_content"
android:layout_weight="1"
android:text="爬山"/>
<CheckBox
android:id="@+id/cb2"
android:layout_width="0dp"
android:layout_height="wrap_content"
android:layout_weight="1"
android:text="跑步"/>
<CheckBox
android:id="@+id/cb3"
android:layout_width="0dp"
android:layout_height="wrap_content"
android:layout_weight="1"
android:text="游泳"/>
</LinearLayout><TextView
android:id="@+id/tv_result"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:text=""/>
</LinearLayout>思考問題如果內(nèi)嵌的LinearLayout高度采用match_parent會發(fā)生什么現(xiàn)象?方法1-實現(xiàn)MainActivity24publicclassMainActivityextendsAppCompatActivity{
CheckBoxcb1,cb2,cb3;
//在onCreate()方法之外訪問,定義成員變量更合適
TextViewtv;
@Override
protectedvoidonCreate(BundlesavedInstanceState){
super.onCreate(savedInstanceState);
setContentView(R.layout.my_main);
tv=findViewById(R.id.tv_result);
cb1=findViewById(R.id.cb1);
cb2=findViewById(R.id.cb2);
cb3=findViewById(R.id.cb3);
cb1.setOnCheckedChangeListener(
newCompoundButton.OnCheckedChangeListener(){
//CheckBox的選中狀態(tài)偵聽和事件回調(diào)
@Override
publicvoidonCheckedChanged(CompoundButtonbuttonView,
booleanisChecked){
updateCheckBox();
//選中待要封裝成方法的代碼塊,使用Ctrl+Alt+M快捷鍵
}
});
cb2.setOnCheckedChangeListener(
newCompoundButton.OnCheckedChangeListener(){
@Override
publicvoidonCheckedChanged(CompoundButtonbuttonView,
booleanisChecked){
updateCheckBox();
}
});
cb3.setOnCheckedChangeListener(
newCompoundButton.OnCheckedChangeListener(){
@Override
publicvoidonCheckedChanged(CompoundButtonbuttonView,
booleanisChecked){
updateCheckBox();
}
});
}
privatevoidupdateCheckBox(){
//將3個CheckBox選中狀態(tài)更新到TextView的處理程序,封裝成方法,方便調(diào)用
Strings="";
if(cb1.isChecked()){//判斷cb1是否被選中,true為被選中
s+=cb1.getText()+"";
//如果cb1選中,取對應文本,拼接到變量s,字符串間加空格間隔
}
if(cb2.isChecked()){
s+=cb2.getText()+"";
}
if(cb3.isChecked()){
s+=cb3.getText();
}
tv.setText(s);
}
}方法2-實現(xiàn)MainActivity25publicclassMainActivityextendsAppCompatActivity
implementsCompoundButton.OnCheckedChangeListener{
//可輸入implementsCheckBox.OnCheckedChangeListener,開發(fā)環(huán)境會自動幫助修改
CheckBoxcb1,cb2,cb3;
TextViewtv;
@Override
protectedvoidonCreate(BundlesavedInstanceState){
super.onCreate(savedInstanceState);
setContentView(R.layout.my_main);
tv=findViewById(R.id.tv_result);
cb1=findViewById(R.id.cb1);
cb2=findViewById(R.id.cb2);
cb3=findViewById(R.id.cb3);
cb1.setOnCheckedChangeListener(this);
//this指向MainActivity實例,該實例有OnCheckedChangeListener接口,
//當事件觸發(fā),會自動回調(diào)接口的onCheckedChanged()方法
cb2.setOnCheckedChangeListener(this);
cb3.setOnCheckedChangeListener(this);
}
@Override
publicvoidonCheckedChanged(CompoundButtonbuttonView,booleanisChecked){
//MainActivityOnCheckedChangeListener接口需要實現(xiàn)的方法
updateCheckBox();//updateCheckBox()同實現(xiàn)方法1
}
}2.6任務6-獲取并顯示EditText文本261EditText文本的獲取方法2EditText的hint屬性3Button點擊偵聽實現(xiàn)布局my_main.xml27<LinearLayoutxmlns:android="/apk/res/android"
android:orientation="vertical"
android:layout_width="match_parent"
android:layout_height="match_parent">
<TextView
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:text="YournameandID"/>
<EditText
android:id="@+id/editTextTextPersonName"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:hint="輸入你的姓名"
android:ems="10"
android:inputType="textPersonName"
android:text=""/>
<Button
android:id="@+id/button"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:text="獲取編輯框文本"/>
<TextView
android:id="@+id/tv_result"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:text=""/>
</LinearLayout>需要理解的屬性hint屬性,設置提示信息ems屬性,設置包圍內(nèi)容時的最小寬度inputType屬性,設置輸入類型(包括輸入法)實現(xiàn)MainActivity28publicclassMainActivityextendsAppCompatActivity{
@Override
protectedvoidonCreate(BundlesavedInstanceState){
super.onCreate(savedInstanceState);
setContentView(R.layout.my_main);
EditTextet=findViewById(R.id.editTextTextPersonName);
TextViewtv=findViewById(R.id.tv_result);
findViewById(R.id.button).setOnClickListener(newView.OnClickListener(){
@Override
publicvoidonClick(Viewv){
tv.setText(et.getText().toString());
}
});
}
}2.7任務7-控制文本顏色以及UI邊距291內(nèi)邊距padding2外邊距margin3XML中顏色的表達4TextView控制字體顏色外邊距屬性舉例(1)android:layout_margin,設置UI上下左右外邊距(2)android:layout_marginStart,設置UI文字起始方向的外邊距(默認是左邊距)(3)android:layout_marginEnd,設置UI文字結(jié)束方向的外邊距(默認是右邊距)(4)android:layout_marginHorizontal,設置UI左右外邊距(5)android:layout_marginTop,設置UI的上外邊距(6)android:layout_marginBottom,設置UI的下外邊距
(7)android:layout_marginVertical,設置UI的上下外邊距內(nèi)邊距與外邊距的區(qū)別30XML中的顏色屬性值31#RGB用1位16進制數(shù)分別表示紅色(R:Red)、綠色(G:Green)和藍色(B:Blue),值越大,對應通道顏色值越大,例如#F00表示紅色。#RRGGBB用2位16進制數(shù)表示對應通道顏色,例如#F00000表示紅色通道值=0xF0h,其他通道顏色值為0的顏色,#F00與#FF0000等效。#ARGB在#RGB的基礎(chǔ)上增加了1位16進制數(shù)表示Alpha通道,即透明度,值越大越不透明,若值為0則全透明。#AARRGGBB在#RRGGBB基礎(chǔ)上增加了2位16進制數(shù)的Alpha通道,用于控制透明度屬性。res/values/color.xml32<resources>
<colorname="purple_200">#FFBB86FC</color>
<colorname="purple_500">#FF6200EE</color>
<colorname="purple_700">#FF3700B3</color>
<colorname="teal_200">#FF03DAC5</color>
<colorname="teal_700">#FF018786</color>
<colorname="black">#FF000000</color>
<colorname="white">#FFFFFFFF</color>
<colorname="other_color">#068E81</color>
</resources>注意,除了other_color以外,其他顏色是向?qū)Мa(chǎn)生的主題顏色XML中引用定義的顏色android:textColor="@color/other_color"Java代碼中使用定義的顏色getResources().getColor(R.color.other_color)Java代碼中預定義的顏色Color.RED,Color.BLUE等布局文件my_main.xml33<LinearLayoutxmlns:android="/apk/res/android"
android:orientation="vertical"
android:layout_width="match_parent"
android:layout_height="match_parent">
<TextView
android:id="@+id/textView"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:text="YournameandID"/>
<LinearLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:orientation="horizontal">
<Button
android:id="@+id/bt_red"
android:layout_width="0dp"
android:layout_weight="1"
android:layout_marginHorizontal="5dp"
android:layout_height="wrap_content"
android:text="Red"/>
<!--使用layout_marginHorizontal設置左右外邊距-->
<!--若使用padding屬性設置內(nèi)邊距無法使得Button之間隔開空隙-->
<Button
android:id="@+id/bt_blue"
android:layout_width="0dp"
android:layout_weight="1"
android:layout_marginHorizontal="5dp"
android:layout_height="wrap_content"
android:text="Blue"/><Button
android:id="@+id/bt_other"
android:layout_width="0dp"
android:layout_weight="1"
android:layout_marginHorizontal="5dp"
android:layout_height="wrap_content"
android:text="Other"/>
</LinearLayout>
</LinearLayout>MainActivity.java34publicclassMainActivityextendsAppCompatActivity{
@Override
protectedvoidonCreate(BundlesavedInstanceState){
super.onCreate(savedInstanceState);
setContentView(R.layout.my_main);
TextViewtv=findViewById(R.id.textView);
findViewById(R.id.bt_red)
.setOnClickListener(newView.OnClickListener(){
@Override
publicvoidonClick(Viewv){
tv.setTextColor(Color.RED);
//TextView對象的setTextColor()方法可設置文本顏色
//Color類是android提供的顏色類,預先定義了若干種常用顏色值
//Color.RED=0xFFFF0000,轉(zhuǎn)換回int值=-00010000h=-65536(補碼規(guī)則)
}
});
findViewById(R.id.bt_blue).setOnClickListener(
newView.OnClickListener(){
@Override
publicvoidonClick(Viewv){
//tv.setTextColor(Color.BLUE);
tv.setTextColor(0xff0000ff);//Color.BLUE的值,按#AARRGGBB解析
}
});
findViewById(R.id.bt_other).setOnClickListener(
newView.OnClickListener(){
@Override
publicvoidonClick(Viewv){
intotherColor=getResources().getColor(R.color.other_color);
//變量聲明可先使用方法調(diào)用,再利用Ctrl+Alt+V快捷鍵生成局部變量
tv.setTextColor(otherColor);
}
});
}
}2.8任務8-相對布局RelativeLayout351相對布局的定位方法2文本的基準線對齊3樣式的引用相對布局的主要對齊方式UI相對RelativeLayout容器的位置關(guān)系或?qū)R關(guān)系UI相對容器位置關(guān)系的屬性名稱與“parent”相關(guān),屬性值為true或falseandroid:layout_centerInParentandroid:layout_alignParentRightandroid:layout_alignParentBottomUI相對其他UI組件的位置關(guān)系屬性值為參考對象的UI的id引用android:layout_below,android:layout_aboveandroid:layout_toLeftOf,android:layout_toRightOfandroid:layout_toStartOf,android:layout_toEndOfUI相對其他UI基準線的位置對齊android:layout_alignBottomUI的底部與參考UI的底部對齊android:layout_alignBaseline文本基準線對齊36UI底部對齊和文本基準線對齊的區(qū)別37<TextView
android:id="@+id/tv1"
android:layout_width="wrap_c
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責。
- 6. 下載文件中如有侵權(quán)或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 智慧園區(qū)設計方案
- 糖尿病飲食處方
- 保護我們的關(guān)節(jié)教案反思
- 物聯(lián)網(wǎng)校園門禁系統(tǒng)
- 預防手足口病喜洋洋
- 城市綠化招投標管理策略
- 工業(yè)廠房抹灰施工協(xié)議
- 企業(yè)重組法律顧問管理辦法
- 商業(yè)廣場綠化工程承攬合同
- 國際學校地暖安裝施工協(xié)議
- 2022年河北唐山中考語文試題及答案
- 端正戀愛動機正確對待失戀《大學生戀愛心理健康輔導》課件
- CMG軟件組分模型操作手冊
- 南通市化學品生產(chǎn)負面清單與控制對策
- 療養(yǎng)院建筑設計規(guī)范
- 湘少版級英語單詞表吐血整理
- 2022版義務教育(英語)課程標準(含2022年修訂和新增部分)
- HCG化驗單(可編輯修改word版)
- 統(tǒng)計學專業(yè)實踐教學體系
- 莫亞10年四柱預測真途弟子班錄像13集DVD+弟子班資料
- 市政工程質(zhì)量評估報告范本
評論
0/150
提交評論