1、TextView
TextView (文本框),用于显示文本的一个控件。
文本的字体尺寸单位为 sp
sp: scaled pixels(放大像素). 主要用于字体显示
常用属性:
属性名 | 作用 |
id | 为TextView设置一个组件id,根据id,我们可以在Java代码中通过findViewById()的方法获取到该对象,然后进行相关属性的设置 |
layout_width | 组件宽度 |
layout_height | 组件高度 |
gravity | 设置控件中内容的对齐方向,TextView中是文字,ImageView中是图片等等 |
text | 设置显示的文本内容,一般我们是把字符串写到string.xml文件中,然后通过@String/xxx取得对应的字符串内容的 |
textColor | 设置字体颜色,同上,通过colors.xml资源来引用 |
textStyle | 设置字体风格,三个可选值:normal(无效果),bold(加粗),italic(斜体) |
textSize | 字体大小,单位一般是用sp |
background | 控件的背景颜色,可以理解为填充整个控件的颜色,可以是图片 |
autoLink | 识别链接类型(web, email, phone ,map ,none, all) |
<?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:gravity="center" android:orientation="vertical"> <TextView android:id="@+id/tv" android:layout_width="400dp" android:layout_height="200dp" android:text="@string/baidu_link" android:gravity="center" android:textColor="@color/baiduFontColor" android:textSize="30sp" android:textStyle="bold" android:background="@mipmap/backgroud" android:autoLink="web"/>LinearLayout>
文本设置边框
-
参考文章:Android UI 基础知识 - shape
实现原理
编写一个ShapeDrawable的资源文件,然后TextView将background设置为这个drawable资源即可。
编写矩形边框的Drawable
<?xml version="1.0" encoding="utf-8"?><shape xmlns:android="http://schemas.android.com/apk/res/android"> <stroke android:width="2px" android:color="#000000"/> <gradient android:angle="270" android:endColor="#C0C0C0" android:startColor="#FCD209"/> <padding android:left="5dp" android:top="5dp" android:right="5dp" android:bottom="5dp"/>shape>
编写圆角矩形边框的Drawable
<?xml version="1.0" encoding="utf-8"?><shape xmlns:android="http://schemas.android.com/apk/res/android"> <solid android:color="#87CEEB"/> <stroke android:width="2px" android:color="#000000"/> <corners android:bottomLeftRadius="20px" android:bottomRightRadius="20px" android:topLeftRadius="20px" android:topRightRadius="20px"/> <padding android:left="5dp" android:top="5dp" android:right="5dp" android:bottom="5dp"/>shape>
设置background
<?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:gravity="center" android:orientation="vertical"> <TextView android:id="@+id/tv1" android:layout_width="400dp" android:layout_height="200dp" android:text="@string/baidu_link" android:gravity="center" android:textColor="@color/baiduFontColor" android:textSize="30sp" android:textStyle="bold" android:background="@drawable/shape_bg_01" android:autoLink="web"/> <TextView android:id="@+id/tv2" android:layout_width="400dp" android:layout_height="200dp" android:text="@string/baidu_link" android:gravity="center" android:textColor="@color/baiduFontColor" android:textSize="30sp" android:textStyle="bold" android:background="@drawable/shape_bg_02" android:autoLink="web"/>LinearLayout>
带图片(drawablexxx)的TextView
属性名 | 作用 |
android:drawableLeft | 文本左边设置图片 |
android:drawableRight | 文本右边设置图片 |
android:drawableBottom | 文本下边设置图片 |
android:drawableTop | 文本上边设置图片 |
@Overrideprotected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_test10); TextView textView =(TextView)findViewById(R.id.tvv); //获得四个不同方向上的图片资源,数组元素依次是:左上右下 Drawable[] drawables = textView.getCompoundDrawables(); //数组下表0-3,依次是:左上右下 drawables[0].setBounds(0,0,100,100); drawables[1].setBounds(0,0,100,100); drawables[2].setBounds(0,0,100,100); drawables[3].setBounds(0,0,100,100); textView.setCompoundDrawables(drawables[0],drawables[1],drawables[2], drawables[3]);}
<?xml version="1.0" encoding="utf-8"?><RelativeLayout 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" tools:context=".MainActivity"> <TextView android:id="@+id/tvv" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_centerInParent="true" android:drawableBottom="@mipmap/face" android:drawableTop="@mipmap/face" android:drawableLeft="@mipmap/face" android:drawableRight="@mipmap/face" android:drawablePadding="10dp" android:text="哈哈哈哈"/>RelativeLayout>
2、EditText(输入框)
EditText输入框,继承于TextView,也继承其属性
EditText特有属性
属性名 | 说明 |
android:hint | 默认提示文本 |
android:textColorHint | 默认提示文本的颜色 |
android:selectAllOnFocus | 布尔值。点击输入框获得焦点后,获取到输入框中所有的文本内容 |
android:inputType | 对输入的数据进行限制 |
android:minLines | 设置最小行数 |
android:maxLines | 设置最大行数PS:当输入内容超过maxline,文字会自动向上滚动!! |
android:singleLine | 只允许单行输入,而且不会滚动 |
android:textScaleX | 设置字与字的水平间隔 |
android:textScaleY | 设置字与字的垂直间隔 |
-
文本类型,多为大写、小写和数字符号
android:inputType="none"android:inputType="text"android:inputType="textCapCharacters"android:inputType="textCapWords"android:inputType="textCapSentences"android:inputType="textAutoCorrect"android:inputType="textAutoComplete"android:inputType="textMultiLine"android:inputType="textImeMultiLine"android:inputType="textNoSuggestions"android:inputType="textUri"android:inputType="textEmailAddress"android:inputType="textEmailSubject"android:inputType="textShortMessage"android:inputType="textLongMessage"android:inputType="textPersonName"android:inputType="textPostalAddress"android:inputType="textPassword"android:inputType="textVisiblePassword"android:inputType="textWebEditText"android:inputType="textFilter"android:inputType="textPhonetic"
-
数值类型
android:inputType="number"android:inputType="numberSigned"android:inputType="numberDecimal"android:inputType="phone"//拨号键盘android:inputType="datetime"android:inputType="date"//日期键盘android:inputType="time"//时间键盘
设置EditText获得焦点,同时弹出小键盘
edit.requestFocus(); //请求获取焦点edit.clearFocus(); //清除焦点
低版本的系统直接requestFocus就会自动弹出小键盘了稍微高一点的版本则需要我们手动地去弹键盘:
Timer timer = new Timer();timer.schedule(new TimerTask() { public void run() { InputMethodManager imm = (InputMethodManager)getSystemService(Context.INPUT_METHOD_SERVICE); imm.toggleSoftInput(0, InputMethodManager.HIDE_NOT_ALWAYS); }}, 1000);
EditText光标位置的控制
setSelection();//一个参数的是设置光标位置的,两个参数的是设置起始位置与结束位置的中间括的部分,即部分选中
实例代码
<?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:background="#eeeeee" android:orientation="vertical" android:padding="10dp"> <TextView android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_gravity="center_horizontal" android:layout_marginTop="40sp" android:text="登录页面" android:textColor="#000000" android:textSize="20sp" /> <LinearLayout android:layout_width="match_parent" android:layout_height="wrap_content" android:layout_marginTop="50dp" android:orientation="horizontal"> <TextView android:layout_width="0dp" android:layout_height="wrap_content" android:layout_weight="1" android:gravity="center_horizontal" android:text="用户名:" android:textColor="#000000" android:textSize="19sp" /> <EditText android:id="@+id/etName" android:layout_width="0dp" android:layout_height="50dp" android:hint="请输入用户名" android:layout_weight="4" /> LinearLayout> <LinearLayout android:layout_width="match_parent" android:layout_height="wrap_content" android:layout_marginTop="20dp" android:orientation="horizontal"> <TextView android:layout_width="0dp" android:layout_height="wrap_content" android:layout_weight="1" android:gravity="center_horizontal" android:text="密 码:" android:textColor="#000000" android:textSize="19sp" /> <EditText android:id="@+id/etPwd" android:layout_width="0dp" android:layout_height="50dp" android:layout_weight="4" android:hint="请输入密码" android:inputType="textPassword" /> LinearLayout>LinearLayout>