安卓学习-界面-ui-TextView

本文详细介绍了Android中文本编辑器的属性、方法及样式设置,包括自动链接、文本转换、可点击链接、文本过滤、键盘输入类型、文本显示与滚动、密码框、电话号码输入、阴影效果、单行模式、文本对齐、大小写转换等功能。
摘要由CSDN通过智能技术生成
属性方法说明
android:autoLink 

是否将符合格式的文本自动转换为可点击的链接

一下几种

web

mail

photo

map

all

android:autoText  
TextView tv = new TextView(context);
//只接受整数输入
KeyListener l = new DigitsKeyListener(fasle,false);
//接受有符号整数输入
KeyListener l = new DigitsKeyListener(true,false);
//接受小数,整数输入
KeyListener l = new DigitsKeyListener(false,true);
//接受有符号整数/小数输入
KeyListener l = new DigitsKeyListener(true,true);
tv.setKeyListener(l);

如果想要实现更大自由度的过滤定制,可以自己写一个KeyListener(继承BaseKeyListener)

并实现InputFilter,重写filter()函数,在filter()函数里可以实现自由的过滤。

 

好像没什么效果

控制是否将url,email等自动转换为可单击的链接

 android:capitalize

好像没什么效果,在EditText里也没效果

控制是否将输入的文本转换为大写

一下几种设置

sentences 每个句子的首字母

words 每个单词的首字母

characters 所有字母

 android:digits

 哪些字符允许输入,比如设置了abcd,那么除了这4个

字母外的其他都输入不进去

 android:cursorVisible  setCursorVisible(boolean visible) 

 文本框的光标是否可见

EditText有效果,在EditView里本来就没光标

 android:drawableTop

setCompoundDrawablesWithIntrinsicBounds

例子:      

Resources res=getResources(); 
Drawable a1 = res.getDrawable(R.drawable.a1); 
Drawable a2 = res.getDrawable(R.drawable.a2); 
Drawable a3 = res.getDrawable(R.drawable.a3); 
Drawable a4 = res.getDrawable(R.drawable.a4); 
//实际上这是一个BitmapDrawable对象 
tv.setCompoundDrawablesWithIntrinsicBounds(a3, a1, a4, a2);

 

 在文本框的头部插入指定图像

 android:drawableBottom 底部
 android:drawableLeft左边 
android:drawableRight 右边 
android:drawableStart

好像没效果

头部位置 

android:drawableEnd 

好像没效果

尾部位置 

 android:drawablePadding 

 与drawable图像之间的距离,

设置了之后,就不是紧挨着了

 android:editable  是否可编辑
 android:ellipsize

 setEllipsize(TextUtils.TruncateAt where)

TruncateAt.START

TruncateAt.MIDDLE

TruncateAt.END 

TruncateAt.MARQUEE

 

超出文本长度后如何显示

start 开始处截断后面省略号

middle 中间处截断后面省略号

end 结尾处截断后面省略号

marquee 自动滚动显示

要设置

android:singleLine="true"

如果要滚动显示 marquee,还必须如下设置

android:focusable="true"
android:focusableInTouchMode="true"

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="fill_parent"
    android:layout_height="fill_parent"
    android:orientation="vertical" 
    android:padding="10dp">

    <TextView
        android:id="@+id/textView1"
        android:layout_width="200dp"
        android:layout_height="wrap_content"
        android:ellipsize="start"
        android:ems="20"
        android:singleLine="true"
        android:text="中国之声《央广新闻》报道,2013年5月北京福润天成房地产有限公司以46亿元摘得上海长宁区新华路街道71街坊地块,刷新当年上海拍卖总价地王记录,但是成交至今已经有15个月了" />

    <TextView
        android:id="@+id/textView2"
        android:layout_width="200dp"
        android:layout_height="wrap_content"
        android:ellipsize="middle"
        android:ems="20"
        android:singleLine="true"
        android:text="中国之声《央广新闻》报道,2013年5月北京福润天成房地产有限公司以46亿元摘得上海长宁区新华路街道71街坊地块,刷新当年上海拍卖总价地王记录,但是成交至今已经有15个月了" />

    <TextView
        android:id="@+id/textView3"
        android:layout_width="200dp"
        android:layout_height="wrap_content"
        android:ellipsize="end"
        android:ems="20"
        android:singleLine="true"
        android:text="中国之声《央广新闻》报道,2013年5月北京福润天成房地产有限公司以46亿元摘得上海长宁区新华路街道71街坊地块,刷新当年上海拍卖总价地王记录,但是成交至今已经有15个月了" />

    <TextView
        android:id="@+id/textView4"
        android:layout_width="200dp"
        android:layout_height="wrap_content"
        android:ellipsize="marquee"
        android:ems="20"
        android:singleLine="true"
        android:focusable="true"  
        android:focusableInTouchMode="true" 
        android:text="中国之声《央广新闻》报道,2013年5月北京福润天成房地产有限公司以46亿元摘得上海长宁区新华路街道71街坊地块,刷新当年上海拍卖总价地王记录,但是成交至今已经有15个月了" />


</LinearLayout>
View Code

 

android:marqueeRepeatLimit

setMarqueeRepeatLimit(int marqueeLimit)

android:ellipsize设置为marquee,自动滚动的次数

android:ems

setEms(int ems)

显示多少字符,超过的将不显示

 android:fontFamily setTypeface

 设置字体

默认只有“sans”, “serif”, “monospace"

要用其他的,就必须设置ttf

textView=(TextView)findViewById(R.id.textView2);

Typeface typeFace =Typeface.createFromAsset(getAssets(),"DroidSansFallback.ttf");
textView.setTypeface(typeFace);

 

 

 android:gravity setGravity(int gravity) 设置内部字体的对齐方式
 android:height setHeight(int pixels) 高度
 android:hint setHint(CharSequence hint) 空的时候,默认的提示
android:imeActionId  当关联输入法时,为输入法提供actionID
 android:imeActionLabel 

 当关联输入法时,为输入法提供actionLabel

 android:imeOptions

 setImeActionLabel(CharSequence label, int actionId)

 

EditorInfo.IME_ACTION_NONE 

EditorInfo.IME_ACTION_GO
EditorInfo.IME_ACTION_SEARCH
EditorInfo.IME_ACTION_SEND
EditorInfo.IME_ACTION_NEXT
EditorInfo.IME_ACTION_DONE

自定义imeOptions,设置setOnEditorActionListener,并判断actionID

XML

<EditText
   android:id="@+id/email_content11"
   android:layout_width="fill_parent"
   android:layout_height="wrap_content"
   android:imeActionLabel="测试"
   android:imeActionId="878"
   android:inputType="text"
   android:text="" >
</EditText>

java代码

EditText et=(EditText)findViewById(R.id.email_content11);
et.setOnEditorActionListener(new OnEditorActionListener() {
    public boolean onEditorAction(TextView v, 
            int actionId, KeyEvent event) {
        if(actionId==878){
            Toast.makeText(MainActivity.this, 
                    "actionId: "+actionId, 1000).show();
            Log.v("","actionId:"+actionId );
        }
        return false;
    }
});

 

必须设置android:inputType="text"或其他,否则下面的没效果

当关联输入法时,为输入法提供额外的信息

可以设置如下值:

normal 自动判断,如果还有下一个就变成下一个,

如果没了就变成done

actionUnspecified 好像和normal差不多,没感觉有区别

 

actionNone 变成空格了

actionGo 按钮变成Go

actionSearch 按钮变成查询图标

actionSend 下一个

actionNext 下一个

actionDone 输入完成,并关闭键盘

 android:includeFontPadding setIncludeFontPadding(boolean includepad) 设置文本是否包含顶部和底部额外空白
 android:inputMethod  
android:inputType

setRawInputType(int type)

变量在EditorInfo属性里,如

InputType.TYPE_NUMBER_FLAG_DECIMAL

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"--URI格式
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"--时间键盘

android:lineSpacingMultiplier

setLineSpacing(float add, float mult)

add   lineSpacingExtra
mult  lineSpacingMultiplier

行之间的间距行,比如2,就是两行中间间隔1行

android:lineSpacingExtra2行间距多少dp高度,和上面的差不多,一个是按行算,一个是按高度dp算
 android:lines setLines(int lines) 默认几行
android:linksClickablesetLinksClickable(boolean whether)链接是否可点击
 android:maxEms setMaxEms(int maxems)

 最大宽度,以em为单位

必须设置为android:layout_width="wrap_content",才有效果

如果设置为3,如下图:

android:minEmssetMinEms(int minems)

最小宽度

 android:maxHeight setMaxHeight(int maxHeight) 最大高度,以dp为单位,设置了之后,回车换行就不会超过这个高度
android:minHeight  
android:maxWidthsetMaxWidth(int maxpixels)最大宽度
android:minWidth  
 android:maxLength

 tv.setFilters(new InputFilter[] {new InputFilter.LengthFilter(5)}); 

自定义控制,不允许输入a

InputFilter aa=new InputFilter(){
    public CharSequence filter(CharSequence source, int start, int end,
            Spanned dest, int dstart, int dend) {
        Log.v("", source.toString());
        if(source.toString().equals("a")){
            return "";
        }
        return null;
    }};
tv=(TextView)findViewById(R.id.editText1);
tv.setFilters(new InputFilter[] {aa});  
View Code

 

 最大字符长度,比如设置为10,就只能输入10个字符
 android:maxLines setMaxLines(int maxlines) 最大多少行
 android:minLines  
android:numeric 

现在好像已经不这么用了,被inputType代替了

3个属性

integer 整形

signed 带符号的数值

decimal 带小数

android:password

 setTransformationMethod

     (PasswordTransformationMethod.getInstance())

打√显示密码

     

XML

<EditText
    android:id="@+id/editText1"
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    android:shadowColor="#FFFF00FF" 
    android:shadowDx="3"
    android:shadowDy="3"
    android:shadowRadius="5" 
    android:inputType="textPassword"
    android:text="123456789" >
</EditText>
View Code

JAVA

public class MainActivity extends Activity {

    TextView tv;
    CheckBox cb;

    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);

        tv=(TextView)findViewById(R.id.editText1);
        
        cb=(CheckBox)findViewById(R.id.checkBox1);
        cb.setOnCheckedChangeListener(new OnCheckedChangeListener() {
    
            public void onCheckedChanged(CompoundButton buttonView, boolean isChecked) {
                if(isChecked){
                    tv.setTransformationMethod(HideReturnsTransformationMethod.getInstance());
                }else{
                    tv.setTransformationMethod(PasswordTransformationMethod.getInstance());
                }
                
            }
        });
    }
}
View Code

 

密码框,被inputType代替了
android:phoneNumber 电话,被inputType代替了
android:privateImeOptions setPrivateImeOptions(String type)不知道什么意思
android:scrollHorizontally 

没什么效果

文本显示不下,是否允许水平滚动

 android:selectAllOnFocus setSelectAllOnFocus(boolean selectAllOnFocus) 选中时是否全选
android:shadowColor

* @attr ref android.R.styleable#TextView_shadowColor
* @attr ref android.R.styleable#TextView_shadowDx
* @attr ref android.R.styleable#TextView_shadowDy
* @attr ref android.R.styleable#TextView_shadowRadius
public void setShadowLayer(float radius, float dx, float dy, int color)

代码

<EditText
    android:id="@+id/editText1"
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    android:shadowColor="#FFFF00FF" 
    android:shadowDx="3"
    android:shadowDy="3"
    android:shadowRadius="5" 
    android:text="啊温热sfd" >
</EditText>

 

 

阴影颜色
android:shadowDx阴影x方向位移
android:shadowDy阴影y方向位移
android:shadowRadius 阴影模糊度,对大越模糊
 android:singleLine

 setTransformationMethod(TransformationMethod method)

tv=(TextView)findViewById(R.id.editText1);   
tv.setTransformationMethod(
SingleLineTransformationMethod.getInstance());

TransformationMethod 实现的类

SingleLineTransformationMethod -单行

PasswordTransformationMethod 密码

 

 单行模式,不换行
 android:text setText 显示的文本
 android:textAllCaps setAllCaps(boolean allCaps)

 是否将所有文字转换为大写

只有API 14以上才支持

android:textAppearance 

设置颜色、字体、大小等样式

比如系统自带的大字样式

android:textAppearance=

"?android:attr/textAppearanceLargeInverse"

android:textColorsetTextColor

字体颜色

<EditText
    android:id="@+id/editText2"
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    android:text="adasfsd" 
    android:textColor="#FFFF0000"
/>

 

android:textColorHighlight setHighlightColor(int color) 

选中时的背景色

<EditText
    android:id="@+id/editText1"
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    android:text="adasfsd" 
    android:textAllCaps="true"
    android:textAppearance=
    "?android:attr/textAppearanceLargeInverse"
android:textColor="#FFFF0000" android:textColorHighlight="#FF00FF00" android:selectAllOnFocus="true" > </EditText>

 

 android:textColorHint setHintTextColor hint颜色
 android:textColorLink setLinkTextColor

 变成link之后的字体颜色

android:textIsSelectablesetTextIsSelectable不能编辑是,文本是否可以被选中
 android:textScaleX setTextScaleX

 横向缩放

android:textSizesetTextSize

字体大小

android:textSize="40dp"

android:textStyle 

字体风格

normal

bold 粗体

italic 斜体

android:typeface
textView=(TextView)findViewById(R.id.textView2);

Typeface typeFace =
Typeface.createFromAsset(getAssets(),"DroidSansFallback.ttf"); textView.setTypeface(typeFace);

设置字体

默认只有3中 sans、serif、monospace

可以自定义字体

 

android:widthsetWidth

长度

例子1

代码

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="fill_parent"
    android:layout_height="fill_parent"
    android:orientation="vertical"
    android:padding="10dp" >

    <!--字号20 末尾设置图像 -->
    <TextView
        android:id="@+id/textView1"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="Large Text"
        android:drawableRight="@drawable/abc_ic_search"
        android:textSize="20sp" />
    
    <!-- 文字过长,中间省略,所有字母大写 -->
    <TextView
        android:id="@+id/textView2"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:singleLine="true"
        android:ellipsize="middle"
        android:text="TextViewTextViewTextViewTextViewTextViewTextViewTextViewTextViewTextViewTextViewTextView" 
        android:textAllCaps="true"
        />
    <!-- 对邮件、电话加链接 -->
    <TextView
        android:id="@+id/textView3"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="TextViewasdf qweqwe@163.com sfasf  057588001234" 
        android:autoLink="all"
        />
    
    <!-- 设置文字颜色、大小、阴影 -->
    <TextView
        android:id="@+id/textView4"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="Large Text"
        android:textAppearance="?android:attr/textAppearanceLarge"
        android:shadowDx="10"
        android:shadowDy="8"
        android:shadowColor="#00f"
        android:shadowRadius="3"
        android:textSize="18pt"
         />

    <!-- 密码框 -->
    <TextView
        android:id="@+id/textView5"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="Large Text"
        android:inputType="textPassword"
        android:textAppearance="?android:attr/textAppearanceLarge" />

    <CheckedTextView
        android:id="@+id/checkedTextView1"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:checkMark="@drawable/abc_ic_clear"
        android:text="CheckedTextView" />

</LinearLayout>
View Code

 例子2

主文件

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="fill_parent"
    android:layout_height="fill_parent"
    android:orientation="vertical"
    android:padding="10dp" >

    <TextView
        android:layout_margin="10dp"
        android:id="@+id/textView1"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="Large Text"
        android:background="@drawable/bg1"
        android:textAppearance="?android:attr/textAppearanceLarge" />

    <TextView
        android:layout_margin="10dp"
        android:id="@+id/textView2"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:background="@drawable/bg2"
        android:text="Large Text"
        android:textAppearance="?android:attr/textAppearanceLarge" />
    
</LinearLayout>
View Code

bg1.xml

<?xml version="1.0" encoding="utf-8"?>
<shape xmlns:android="http://schemas.android.com/apk/res/android" >
    <!-- 设置背景为透明色 -->
    <solid android:color="#0000"/>
    <solid android:color="#f00" android:width="4px"/>
</shape>
View Code

bg2.xml

<?xml version="1.0" encoding="utf-8"?>
<shape xmlns:android="http://schemas.android.com/apk/res/android" android:shape="rectangle">
    <!-- 4个圆角 -->
    <corners android:topLeftRadius="20px"
        android:topRightRadius="5px"
        android:bottomRightRadius="20px"
        android:bottomLeftRadius="5px"
        />
    <!--边框宽度和颜色-->
    <stroke android:color="#f0f" android:width="4px"/>
    <!-- 指定颜色渐变 -->
    <gradient android:startColor="#f00" android:centerColor="#0f0"  android:endColor="#00f" android:type="sweep"/>
    
</shape>
View Code

 

转载于:https://www.cnblogs.com/weijj/p/3931373.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值