Android学习笔记六-----简单文本编辑器

首先我们应该明确自己要实现的界面及相关功能;界面样式如下图所示:
在这里插入图片描述
我们可以看到,这里有一个新的知识点,就是最后面“请输入信息”那里的数据传输窗口;即EditText组件;
EditText组件:基本上是用户与Android应用程序之间数据传输的窗口,比如一个登陆界面,需要输入账号密码,然后获取用户输入的内容,并进行校对判断。EditText组件是TextView的子类,所以其大部分属性和TextView相同。
下面是我们这个编辑器的EditText的代码部分:`

<EditText
            android:id="@+id/content"//定义文本框的id名
            android:layout_width="wrap_content"//设置文本框的宽度
            android:layout_height="wrap_content"//设置文本框的高度
            android:hint="请输入信息"//设置显示信息
            />`

在文本编辑器中,我们依然采用嵌套式的布局方式;可以根据自己的需求进行设置;这里就不再赘述了;
在这里我们给每一行设置监听事件时采用不同的方法,如下图所示:
在这里插入图片描述
内部监听类:即在MainActivity.java文件中定义按钮,然后在创建监听器对象,然后并绑定监听器对象,并且在MainActivity.java文件中设置单击事件。

    //定义按钮
    private Button btnBlue = null;
    private Button btnRed = null;//赋值为null后面可以直接引用的
    private Button btnGreen = null;
    //通过findViewById查找id,以便于后面的使用。
    btnRed = (Button) findViewById(R.id.btnRed);
    btnGreen = (Button) findViewById(R.id.btnGreen);
    btnBlue = (Button) findViewById(R.id.btnBlue);
    //创建监听器对象:
    ColorListener myColorListener = new ColorListener();//颜色的监听器对象
    //绑定监听器:
        btnRed.setOnClickListener(myColorListener);
        btnGreen.setOnClickListener(myColorListener);
        btnBlue.setOnClickListener(myColorListener);
     //内部类形式定义改变颜色监听事件,监听按钮上的单击事件
    public class ColorListener implements View.OnClickListener{//声明监视器类
    public void onClick(View v) {//v即是事件源;重写onClick方法,中进行颜色改变
//            if(v.getId()== R.id.btnRed){
//                test.setTextColor(Color.RED);//调用test.steTextColor方法进行颜色更改;设置返回颜色为红色
//            }
//            if (v.getId() == R.id.btnGreen){
//                test.setTextColor(Color.GREEN);
//            }
//            if (v.getId() == R.id.btnBlue){
//                test.setTextColor(Color.BLUE);
//            }
            //简化代码:
            switch (v.getId()){
                case R.id.btnRed:
                    test.setTextColor(Color.RED);
                    break;
                case R.id.btnGreen:
                    test.setTextColor(Color.GREEN);
                    break;
                case R.id.btnBlue:
                    test.setTextColor(Color.BLUE);
                    break;
                default:
                    break;
            }
        }
    }

第二行为外部类形式:
在MainActivity.java文件中定义按钮,找到id,并且创建监听器,绑定监听器,但是在与MainActivity.java文件平行的文件SizeListener.java文件中设置单击事件。

    //定义按钮:
    private Button btnBig = null;
    private Button btnSmall = null;
    private Button btnDefault1 = null;
    //通过findviewbyid查找id
    btnBig = (Button) findViewById(R.id.btnBig);
    btnSmall =(Button) findViewById(R.id.btnSmall);
    btnDefault1 =(Button)findViewById(R.id.btnDefault1);
    //创建监视器对象
    SizeListener mySizeListener = new SizeListener(test);
    //绑定监视器对象
    btnBig.setOnClickListener(mySizeListener);
    btnSmall.setOnClickListener(mySizeListener);
    btnDefault1.setOnClickListener(mySizeListener);
    //在SizeListener.java中设置单击事件。
    package com.example.third;

import android.graphics.Typeface;
import android.util.TypedValue;
import android.view.View;
import android.widget.TextView;

public class SizeListener implements View.OnClickListener {
    private TextView test =null;

    public SizeListener(TextView tv){
        test = tv;
    }
    public void onClick(View v){///重定义onClick方法
        float size = test.getTextSize();
        System.out.println(size);
        switch (v.getId()){//检测ID并进行操作
            case  R.id.btnBig:
                size = size+2;
                break;
            case R.id.btnSmall:
                size = size-2;
                break;
            case R.id.btnDefault1://默认则不变;恢复初始大小
                size = 30;
        }
        test.setTextSize(TypedValue.COMPLEX_UNIT_PX,size);
    }
}

在这里需要注意一下:
getTextSize返回值是以像素(px)为单位的,而setTextSize()是以sp为单位的,两者单位不一致才造成这样的结果。
这里可以用setTextSize()的另外一种形式,可以指定单位:
setTextSize(int unit, int size)
TypedValue.COMPLEX_UNIT_PX : Pixels
TypedValue.COMPLEX_UNIT_SP : Scaled Pixels
TypedValue.COMPLEX_UNIT_DIP : Device Independent Pixels
第三行则是类自身作为时间监听器:
将MainActivity类定义为:(不建议对MainActivity类进行别的定义;它一般只用于用户界面显示和功能定义)

public class MainActivity extends AppCompatActivity implements View.OnClickListener
//绑定监听器:
btnBold.setOnClickListener(this);//将MainActivity对象作为监视器对象绑定
btnTilt.setOnClickListener(this);
btnDefault2.setOnClickListener(this);
//设置单击事件:
//    用0表示默认字体;1表示斜体;2表示粗体;3表示粗斜体
//    在Typeface中,定义了常用的字体类型和字体样式:
//    字体类型
//    Typeface.DEFAULT:默认字体,常规字体类型
//    Typeface.DEFAULT_BOLD:黑体字体类型
//    Typeface.MONOSPACE:等宽字体类型
//    Typeface.SANS_SERIF:sans serif字体类型
//    字体样式
//    Typeface.BOLD //粗体
//    Typeface.BOLD_ITALIC //粗斜体
//    Typeface.ITALIC //斜体
//    Typeface.NORMAL //常规
    public void onClick(View v){//点击之后的逻辑上的处理
        Typeface tf = test.getTypeface();
        switch (v.getId()){
            case R.id.btnBold:
                if(flag==1||flag==3){
                    test.setTypeface(Typeface.MONOSPACE,Typeface.BOLD_ITALIC);
                    flag = 3;
                }else {
                    test.setTypeface(Typeface.MONOSPACE,Typeface.BOLD);
                    flag = 2;
                }
                break;
            case R.id.btnTilt:
                if (flag==2||flag==3){
                    test.setTypeface(Typeface.MONOSPACE,Typeface.BOLD_ITALIC);
                    flag = 3;
                }else {
                    test.setTypeface(Typeface.MONOSPACE,Typeface.ITALIC);
                    flag = 1;
                }
                break;
            case R.id.btnDefault2: {
                test.setTypeface(Typeface.MONOSPACE, Typeface.NORMAL);
                flag = 0;
                break;
            }
        }
    }//包含定义类和方法

第四行的内部匿名类:

//定义EditText content
private EditText content = null;
//查找id
content = (EditText)findViewById(R.id.content);
//创建,绑定监听器及设置单击事件;
content.setOnEditorActionListener(new TextView.OnEditorActionListener() {
            @Override
            public boolean onEditorAction(TextView v, int actionId, KeyEvent event) {
                test.setText(content.getText().toString());//调用getText方法,并改称成字符串,在最上面的测试框显示
                content.setText("");
                return false;
            }
        });

到此,我们的简单文本编辑器就做好了;我们下个笔记再会吧。

  • 0
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

入门就入土&小迷弟

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值