Android02--Android之UI控件TextView+Button+EditText

TextView

TextView相关属性,详见API或者
http://jingyan.baidu.com/article/c85b7a640641dc003aac9562.html

<TextView
        android:id="@+id/main_text"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:ellipsize="marquee"
        android:focusable="true"
        android:focusableInTouchMode="true"
        android:textSize="24sp"
        android:marqueeRepeatLimit="marquee_forever"
        android:singleLine="true"
        android:text="mingbaomingbaomingbaomingbaomingbaomingbaomingbaomingbaomingbaomingbaomingbaomingbaomingbaomingbaomingbaomingbaomingbaomingbaomingbao"
        />

TextView实现跑马灯
一个屏幕默认只能显示一个跑马灯,即只会让 android:focusable=”true”
android:focusableInTouchMode=”true”一个textView中的有效.如果要显示多个跑马灯,可以在代码中硬性控制mText.setSelected(true);.
实现跑马灯的四个控件:

 android:ellipsize="marquee"
 // 可获得焦点
 android:focusable="true"
 // 触摸获得焦点
 android:focusableInTouchMode="true"
 android:singleLine="true"

或者

android:singleLine="true"
android:ellipsize="marquee"
// 在代码中设置
// 包含上面focusableInTouchMode和focusable这两个属性
mText.setSelected(true);

Button

Button是TextView的子类,

增加相应的构造方法,没有差别

下面来两种定义都可以描述一个Button
  <Button
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="Click" />

    <TextView
        style="?attr/buttonStyle"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_gravity="center"
        android:text="Click"
        />

EditText

这里写图片描述
EditText也是TextView的一个子控件,具有TextView的所有属性,没个EditText一般都会有自己的inputType.
比较重要的属性:
在单行模式下测试:(因为imeOptions只能对没有用的键进行重定义)

// 单行显示,在此情况下,回车键是废的
// android:singleLine="true"
// inputType的属性,默认情况下都是单行模式,可以替代掉singleline.
  android:inputType="text"
// 重新定义回车键的样式
android:imeOptions="actionGo"
// 系统默认的样式
/*
actionNext    软键盘不关闭,光标跳到下一个输入焦点位置(发送EditorInfo.IME_ACTION_NEXT命令)
actionGo      软键盘不关闭,光标跳到下一个输入焦点位置,发送EditorInfo.IME_ACTION_GO命令
actionSearch  软键盘不关闭,发送EditorInfo.IME_ACTION_SEARCH命令
actionSend    软键盘关闭,发送EditorInfo.IME_ACTION_SEND命令
actionDone    软键盘关闭,光标保持在原来的输入框上,发送EditorInfo.IME_ACTION_DONE命令*/

自定义 键的标签

// 在自定义标签中一般都要加上一个actionId,值自己指定(个人理解:因为没个EditText都会有自己的一个ID对应自己系统的imeOptions)
android:imeActionId="1"
// 上面设置的键盘操作,的按钮文字都是系统默认设置,我们可以通过android:imeActionLabel属性来设置我们自定义的标签文本,
android:imeActionLabel="发送"

对回车键的监听:

 edit.setOnEditorActionListener(this);
// 要实现的方法
 // 除了setOnClickListener,一般都会有一个返回值,判断是否完成
 // textView表示哪个控件
    // actionId:一个EditText只能有一个,表示控件的哪个ID
    // keyEvent:点击的哪个键出发的事件
    @Override
    public boolean onEditorAction(TextView textView, int actionId, KeyEvent keyEvent) {
        switch (textView.getId()) {
            case R.id.edit_text1:
                switch (actionId) {
                      case EditorInfo.IME_ACTION_SEND:
                        Toast.makeText(MainActivity.this, "发送", Toast.LENGTH_SHORT).show();
                        break;
                        break;
                }
                break;
        }
        return true;
    }

EditText中常用的监听还有一个:

// 对出入内容的一个控制
edit.addTextChangedListener(this);
// 要实现的方法
 @Override
 // start:字符开始的位置
 // count:一般都是0;(count表示输入的状态插入式0,替换式替换的字符的大小)
 // after:一次性向输入框中输入的字符的个数
    public void beforeTextChanged(CharSequence s, int start, int count, int after) {
        Log.d(TAG, "beforeTextChanged: " + s + "," + start + "," + count + "," + after);
    }

    @Override
    // before:
    public void onTextChanged(CharSequence s, int start, int before, int count) {
        Log.d(TAG, "onTextChanged: " + s + "," + start + "," + before + "," + count);
    }

    @Override
    // 点击之后,一般会对文本做一个检测
    public void afterTextChanged(Editable s) {
        Log.d(TAG, "afterTextChanged: " + s);
        for (int i = 0; i < s.length(); i++) {
            if (s.charAt(i) != 'a') {
                s.delete(i, i+1);
            }
        }

    }

稍微提一下:
AutoCompleteTextView
AutoCompleteTextView自动补充输入文本,是EditText的一个子类,当我们输入一部分字符时,就会给我们列出和我们输入相匹配的内容。

提供参考:
http://blog.csdn.net/wangfayinn/article/details/8080740
http://android.tgbus.com/Android/tutorial/201108/361860.shtml
http://www.cnblogs.com/zyw-205520/archive/2013/02/15/2912865.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值