chap2-Android的布局与基本UI_第1页
chap2-Android的布局与基本UI_第2页
chap2-Android的布局与基本UI_第3页
chap2-Android的布局与基本UI_第4页
chap2-Android的布局与基本UI_第5页
已阅读5页,还剩42页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

Android的布局与基本UI

2.1任务1-按钮Button与文本TextView的互动21线性布局的初步使用2按钮点击事件处理3Toast的使用4随机整数的使用线性布局LinearLayout方向控制android:orientationvertical,垂直线性布局,依次从上往下放horizontal,水平线性布局,依次从左往右方尺寸属性android:layout_widthandroid:layout_heightmatch_parent与父视图(父容器)匹配尺寸(占据父容器的剩余空间)wrap_content包围内容,宽或高由内容决定绝对值,使用相对像素,例如100dp注意事项当尺寸属性设置为match_parent,将使得同级后续UI被挤出容器不可见3常用快捷键1Ctrl+Shift+Space(Ctrl+Alt+Space):代码智能自动填充。Alt+Enter:快速修复错误,使用时鼠标须定位到提示错误的地方。Alt+Insert:代码生成器,例如构造方法、类成员变量的getter和setter方法、方法重写、接口实现、toString()方法等。Ctrl+Alt+T:调出try-catch、if、for等代码模板,先选中需要使用模板的代码,再使用快捷键。Ctrl+D:快速复制当前行代码。Ctrl+鼠标左键:跳转到定义处。Ctrl+Alt+左箭头:跳转到上次编辑处。Ctrl+Alt+V:将当前赋值或者方法调用的返回值赋为局部变量(V:Variable),使用频率极高,大大提高编程效率。Ctrl+Alt+F:将当前赋值或者方法调用的返回值赋为成员变量(F:Field)。Ctrl+Alt+M:将选中的代码块提取成一个方法(M:Method)。4常用快捷键2Ctrl+P:查看方法的参数信息。Ctrl+Q:调出帮助信息,例如方法的使用文档和参数说明,返回值定义等。Shift+F6智能重命名,相关变量或者类会自动改名。Ctrl+/:当前行代码注释与反注释。Ctrl+Shift+/:选中代码块注释与反注释。Ctrl+Alt+L:代码格式化,将代码缩进等调整得更加美观。Ctrl+O:显示父类所有可改写的方法,包括接口方法。Ctrl+Alt+O:优化代码导入包,删除未被使用的包。F8:单步调试(StepOver),当前代码单行执行,若是方法调用,则执行方法直至方法返回。F7:单步调试(StepInto),若是单行赋值代码与F8相同,若是方法调用,则会跳入方法,执行所调用方法的首行代码并暂停。Alt+F9:执行到光标处。Alt+F8:弹出表达式窗口,可对对象进行表达式运算。F9:全速运行,若遇到下一个断点,则暂停到下一个断点,在调试中常和F8、断点等配合使用。5按钮Button的点击事件侦听直接对Button对象设置点击侦听,并匿名实现点击侦听接口对MainActivity类写Button的侦听接口实现,并将侦听接口指向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点击回调

}

}publicclassMainActivityextendsAppCompatActivity{

@Override

protectedvoidonCreate(BundlesavedInstanceState){

super.onCreate(savedInstanceState);

setContentView(R.layout.my_main);

}

publicvoidbuttonOnclick(Viewview){

//XML中定义的Button点击回调方法

}

}<Button…android:onClick="buttonOnClick"…/>文本框不可编辑文本框TextViewandroid:textColor设置字体颜色(引用颜色或者#RRGGBB)android:textSize设置字体大小(单位使用sp)android:autoLink智能文本链接phone识别电话号码web识别网址all识别所有链接可编辑文本框EditTextandroid:ems在宽度为wrap_content时生效,控制宽度,单位为字符android:inputType设置输入类型android:hint设置提示信息,当EditText清空时显示hint信息Toast弹出提示框Toast.makeText(android.content.Contextcontext,CharSequencetext,intduration).show()context:指MainActivity.thistext:显示的内容duration:Toast.LENGTH_LONG,Toast.LENGTH_SHORT7任务1实现-布局my_main.xml8<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="你的个人信息"/>

<!--文本框,宽度与线性容器同宽,等同于与屏幕同宽,由内容决定高度-->

<!--注释只能在UI标签之外,可用“ctr+/”快捷键-->

<Button

android:id="@+id/button"

android:layout_width="match_parent"

android:layout_height="wrap_content"

android:text="生成随机数"/>

<!--按钮Button,并使用android:id属性创建了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实现-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关键词是因为tv是局部变量,只能在onCreate()中访问

//若要在该函数的匿名函数中访问,可将tv设为全局变量或者final局部变量

Buttonbt=findViewById(R.id.button);

bt.setOnClickListener(newView.OnClickListener(){

@Override

publicvoidonClick(Viewview){

inti=newRandom().nextInt(1000);//利用随机函数产生一个[0,999]的整型随机数

tv.setText(""+i);//字符串“”与i通过+拼接运算,自动将i变量转为对应字符串

Strings=String.format("第%d次按钮",++count);//String.format相当于C语言的sprintf

Toast.makeText(MainActivity.this,s,Toast.LENGTH_SHORT).show();//Toast显示内容

}

});

}

}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);//利用随机函数产生一个[0,999]的整型随机数

tv.setText(""+i);//字符串“”与i通过+拼接运算,自动将i变量转为对应字符串

Strings=String.format("第%d次按钮",++count);//String.format相当于C语言的sprintf

Toast.makeText(MainActivity.this,s,Toast.LENGTH_SHORT).show();//Toast显示内容

}

});

}

}利用Logcat窗口能看到程序出错的原因和出错处的代码(蓝色链接)本程序出错,tv不能在成员变量中初始化,因为此时尚未调用onCreate()方法,没有视图,无法找到相关UI,导致tv为null2.2任务2-布局对齐gravity与layout_gravity121UI内部对齐gravity2UI与父容器对齐layout_gravity3layout_gravity的使用条件父容器方向与对齐方向正交对齐常用属性left:左对齐;right:右对齐;start:取决于语言习惯,若是从左到右的文字顺序则等效于左对齐,反之则右对齐;end:与start相对应,为start的相反方向;top:顶部对齐;bottom:底部对齐;center:上下左右居中对齐;center_horizontal:水平居中对齐;center_vertical:垂直居中对齐。13任务2实现-布局文件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设置为底部对齐,能否实现?为什么?2.3任务3-UI的权重控制151layout_weight控制宽度或者高度由什么决定2权重控制的是剩余空间权重控制什么时候失效3如何实现UI的绝对等比分配不同宽度下权重的控制效果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通过权重控制,按3:1占据线性布局剩余高度-->

<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控制组内RadioButton按水平方向依次放置RadioButton往往还需要layout_weight属性控制宽度权重vertical控制组内RadioButton按垂直方向依次放置事件处理setOnCheckedChangeListener()方法,侦听选中状态改变侦听回调方法

publicvoidonCheckedChanged(RadioGroupgroup,intcheckedId)checkedId:被选中的RadioButton的id,可配合findViewById()方法得到选中的对象19实现布局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创建id属性,设置方向属性为水平方向,注意高度是wrap_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>实现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()方法和参数checkedId,关联对应RadioButton

tv.setText(rb.getText());

//通过RadioButton对象的getText()方法获取文本并赋给tv

}

});

}

}2.5任务5-多选框CheckBox221多选框与单选框的区别2CheckBox对象响应事件3MainActivity响应CheckBox事件实现布局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>思考问题如果内嵌的LinearLayout高度采用match_parent会发生什么现象?方法1-实现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的选中状态侦听和事件回调

@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选中状态更新到TextView的处理程序,封装成方法,方便调用

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-实现MainActivity25publicclassMainActivityextendsAppCompatActivity

implementsCompoundButton.OnCheckedChangeListener{

//可输入implementsCheckBox.OnCheckedChangeListener,开发环境会自动帮助修改

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接口,

//当事件触发,会自动回调接口的onCheckedChanged()方法

cb2.setOnCheckedChangeListener(this);

cb3.setOnCheckedChangeListener(this);

}

@Override

publicvoidonCheckedChanged(CompoundButtonbuttonView,booleanisChecked){

//MainActivityOnCheckedChangeListener接口需要实现的方法

updateCheckBox();//updateCheckBox()同实现方法1

}

}2.6任务6-获取并显示EditText文本261EditText文本的获取方法2EditText的hint属性3Button点击侦听实现布局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属性,设置包围内容时的最小宽度inputType属性,设置输入类型(包括输入法)实现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内边距padding2外边距margin3XML中颜色的表达4TextView控制字体颜色外边距属性举例(1)android:layout_margin,设置UI上下左右外边距(2)android:layout_marginStart,设置UI文字起始方向的外边距(默认是左边距)(3)android:layout_marginEnd,设置UI文字结束方向的外边距(默认是右边距)(4)android:layout_marginHorizontal,设置UI左右外边距(5)android:layout_marginTop,设置UI的上外边距(6)android:layout_marginBottom,设置UI的下外边距

(7)android:layout_marginVertical,设置UI的上下外边距内边距与外边距的区别30XML中的颜色属性值31#RGB用1位16进制数分别表示红色(R:Red)、绿色(G:Green)和蓝色(B:Blue),值越大,对应通道颜色值越大,例如#F00表示红色。#RRGGBB用2位16进制数表示对应通道颜色,例如#F00000表示红色通道值=0xF0h,其他通道颜色值为0的颜色,#F00与#FF0000等效。#ARGB在#RGB的基础上增加了1位16进制数表示Alpha通道,即透明度,值越大越不透明,若值为0则全透明。#AARRGGBB在#RRGGBB基础上增加了2位16进制数的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以外,其他颜色是向导产生的主题颜色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属性设置内边距无法使得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,转换回int值=-00010000h=-65536(补码规则)

}

});

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);

//变量声明可先使用方法调用,再利用Ctrl+Alt+V快捷键生成局部变量

tv.setTextColor(otherColor);

}

});

}

}2.8任务8-相对布局RelativeLayout351相对布局的定位方法2文本的基准线对齐3样式的引用相对布局的主要对齐方式UI相对RelativeLayout容器的位置关系或对齐关系UI相对容器位置关系的属性名称与“parent”相关,属性值为true或falseandroid:layout_centerInParentandroid:layout_alignParentRightandroid:layout_alignParentBottomUI相对其他UI组件的位置关系属性值为参考对象的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底部对齐和文本基准线对齐的区别37<TextView

android:id="@+id/tv1"

android:layout_width="wrap_c

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论