安卓学习-界面-ui-TextView

属性 方法 说明
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:lineSpacingExtra 2行间距多少dp高度,和上面的差不多,一个是按行算,一个是按高度dp算
 android:lines  setLines(int lines)  默认几行
android:linksClickable setLinksClickable(boolean whether) 链接是否可点击
 android:maxEms  setMaxEms(int maxems)

 最大宽度,以em为单位

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

如果设置为3,如下图:

android:minEms setMinEms(int minems)

最小宽度

 android:maxHeight  setMaxHeight(int maxHeight)  最大高度,以dp为单位,设置了之后,回车换行就不会超过这个高度
android:minHeight    
android:maxWidth setMaxWidth(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:textColor setTextColor

字体颜色

<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:textIsSelectable setTextIsSelectable 不能编辑是,文本是否可以被选中
 android:textScaleX  setTextScaleX

 横向缩放

android:textSize setTextSize

字体大小

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:width setWidth

长度

例子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