zoukankan      html  css  js  c++  java
  • 安卓学习-界面-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
  • 相关阅读:
    WPF杂难解 图片模糊的暂时解决方案
    wpf学习笔记 NotifyPropertyChanged实现数据变化自动更新UI
    WPF杂难解 粘贴板复制GIF图片时丢失透明背景
    WPF杂难解 RichTextBox粘贴图片地址处理,并保存的问题
    wpf学习笔记 依赖属性
    WPF杂难解 中文字体显示模糊
    雪花型,支架型,和桥型 的区别
    BI工具对比
    关于javac不是内部命令的解决办法
    转载 android listview getview() 反复调用
  • 原文地址:https://www.cnblogs.com/weijj/p/3931373.html
Copyright © 2011-2022 走看看