继续浏览精彩内容
慕课网APP
程序员的梦工厂
打开
继续
感谢您的支持,我会继续努力的
赞赏金额会直接到老师账户
将二维码发送给自己后长按识别
微信支付
支付宝支付

MogonBook_Android_控件

MahoneAlex
关注TA
已关注
手记 24
粉丝 49
获赞 326

一、Android 常用控件之TextView
  • 概念:用来显示文本的空间,被称之为文本域
  • text:显示的内容
  • textSize:文字的大小
  • textColor:文字的颜色
  • visibility:可见性(默认是可见:invisible表示不可见,但是空间区域做了保留,gone:可以隐藏控件,并且当前控件的区域不做保留)
  • maxLength:最大程度
  • maxLines:最大行数
  • autoLink:自动链接的类型

二、Android Button按钮的四种监听

使用匿名内部类的形式进行设置

//XML部分
<Button android:id="@+id/btn"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="点击"/>
//Java部分
//通过id找到关联布局中的id为btn的view控件
Button btn = (Button) findViewById(R.id.btn);
//给Button按钮添加点击的监听
btn.setOnClickListener(new OnClickListener() {
        //只要当前的设置的监听器被触发,这个方法就会被执行
        @Override
        public void onClick(View v) {
                Log.i("TAG","点击了BTN按钮");
        }
});

在XML文件中定义onClick属性,在java代码中书写对应的代码

//XML中代码
<Button android:id="@+id/btn"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:onClick="doit"
        android:text="点击"/>
//Java中的代码
public void doit(View view){
    Log.i("TAG","点击了BTN按钮");
}

Activity实现onClickListener接口

//XML部分
<Button android:id="@+id/btn"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="点击"/>
//Java部分
//首先当前Activity类要实现OnClickListener接口,并重写其下的方法
public class MainActivity extends Activity implements OnClickListener{
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        //找到控件的id,也叫控件的初始化
        Button btn = (Button) findViewById(R.id.btn);
        //给Button按钮设置点击的监听
        btn.setOnClickListener(this);
    }

    @Override
    public void onClick(View v) {
        Log.i("TAG","点击了BTN按钮");
    }
}

其他类实现OnClickListener接口

//XML部分
<Button android:id="@+id/btn"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="点击"/>
//JAVA部分
public class MainActivity extends Activity{

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        //找到控件的id
        Button btn = (Button) findViewById(R.id.btn);
        //传入实现了OnClickListener接口的类对象
        btn.setOnClickListener(new MyListener());
    }

    //定义一个类来实现OnClickListener接口
    class MyListener implements OnClickListener{
        //v就是触发点击的View控件
        @Override
        public void onClick(View v) {
            Log.i("TAG","点击BTN按钮");
        }
    }
}

多个按钮绑定点击事件

//XML部分
<Button android:id="@+id/btn1"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="按钮1"/>
<Button android:id="@+id/btn2"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="按钮2"/>
//Java部分
public class MainActivity extends Activity {
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        MyListener myListener = new MyListener();
        // 初始化按钮控件
        Button btn1 = (Button) findViewById(R.id.btn1);
        Button btn2 = (Button) findViewById(R.id.btn2);
        // 为按钮绑定监听事件
        btn1.setOnClickListener(myListener);
        btn2.setOnClickListener(myListener);
    }

    // 定义一个类来实现OnClickListener接口
    class MyListener implements OnClickListener {
        @Override public void onClick(View v) {
            switch (v.getId()) {
                case R.id.btn1: Log.i("TAG","点击了BTN1按钮");
                    break;
                case R.id.btn2: Log.i("TAG","点击了BTN2按钮");
                    break;
                default:
                    break;
            }
        }
    }
}

三、CheckBox和RadioButton

CheckBox:是用来进行多选的按钮

  • CheckBox是选择框,只有选中或未选中两种状态,一般会用在复选按钮操作上,表示可以有多个选项提供进行勾选
  • 一般会使用在多个选项都可以选择的情况下,例如:选择自身的爱好
  • OnCheckedChangeListener是定义在CompoundButton下的监听对象。因为CheckBox是CompoundButton的子类,所以可以直接使用
//XML部分
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
        xmlns:tools="http://schemas.android.com/tools"
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        android:paddingBottom="@dimen/activity_vertical_margin"
        android:paddingLeft="@dimen/activity_horizontal_margin"
        android:paddingRight="@dimen/activity_horizontal_margin"
        android:paddingTop="@dimen/activity_vertical_margin"
        android:orientation="vertical"
        tools:context="com.example.mogon.MainActivity">

        <TextView android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:textSize="20sp"
                android:text="请选择你的爱好:"/>

        <CheckBox android:id="@+id/footBall"
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:text="足球" />

        <CheckBox android:id="@+id/swim"
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:text="游泳" />

        <CheckBox android:id="@+id/basketBall"
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:text="篮球" />

        <CheckBox android:id="@+id/sleep"
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:text="睡觉" />

        <Button android:id="@+id/check"
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:text="查看选中" />
</LinearLayout>
//Java部分
public class MainActivity extends Activity {

    private Button check;
    private CheckBox footBall, swim, basketBall, sleep;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        // 控件初始化
        check = (Button) findViewById(R.id.check);
        footBall = (CheckBox) findViewById(R.id.footBall);
        swim = (CheckBox) findViewById(R.id.swim);
        basketBall = (CheckBox) findViewById(R.id.basketBall);
        sleep = (CheckBox) findViewById(R.id.sleep);
        // 使用匿名内部类的形式进行按钮的点击监听
        check.setOnClickListener(new OnClickListener() {
            @Override
            public void onClick(View v) {
                showCheck();
            }
        });
    }

    private void showCheck() {
        StringBuffer sb = new StringBuffer();
        if (footBall.isChecked()) {
            sb.append(footBall.getText().toString() + ",");
        }
        if (swim.isChecked()) {
            sb.append(swim.getText().toString() + ",");
        }
        if (basketBall.isChecked()) {
            sb.append(basketBall.getText().toString() + ",");
        }
        if (sleep.isChecked()) {
            sb.append(sleep.getText().toString() + ",");
        }
        if (sb.length() > 0) {
            String str = sb.substring(0, sb.length() - 1);
            Toast.makeText(this, "选中的内容有:" + str, Toast.LENGTH_SHORT).show();
        } else {
            Toast.makeText(this, "请选择你的爱好", Toast.LENGTH_SHORT).show();
        }
    }
}

Toast的使用

  • 第一种方式
//XML部分
<RadioGroup android:layout_width="wrap_content"
        android:layout_height="wrap_content">

        <RadioButton android:id="@+id/nan"
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:text="男"/>

        <RadioButton android:id="@+id/nv"
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:text="女"/>
</RadioGroup>
//Java部分
public class MainActivity extends Activity {

    private RadioButton nan,nv;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        //初始化控件
        nan = (RadioButton) findViewById(R.id.nan);
        nv = (RadioButton) findViewById(R.id.nv);
        //给按钮添加选中的监听
        nan.setOnCheckedChangeListener(new OnCheckedChangeListener() {
            @Override
            public void onCheckedChanged(CompoundButton buttonView, boolean isChecked) {
                if(isChecked){
                    Toast.makeText(MainActivity.this, "选中的是"+buttonView.getText(), Toast.LENGTH_SHORT).show();
                }
            }
        });
        nv.setOnCheckedChangeListener(new OnCheckedChangeListener() {
            @Override
            public void onCheckedChanged(CompoundButton buttonView, boolean isChecked) {
                if(isChecked){
                    Toast.makeText(MainActivity.this, "选中的是"+buttonView.getText(), Toast.LENGTH_SHORT).show();
                }
            }
        });
    }
}
  • 第二种方式
//XML部分
<RadioGroup android:id="@+id/radioGroup"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content">

        <RadioButton android:id="@+id/nan"
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:text="男"/>

        <RadioButton android:id="@+id/nv"
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:text="女"/>
</RadioGroup>
//Java部分public class MainActivity extends Activity {

    RadioButton nan,nv;
    RadioGroup readioGroup;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        //初始化控件
        readioGroup = (RadioGroup) findViewById(R.id.radioGroup);
        nan = (RadioButton) findViewById(R.id.nan);
        nv = (RadioButton) findViewById(R.id.nv);
        //对RadioGroup进行OnCheckedChangeListener事件绑定
        readioGroup.setOnCheckedChangeListener(new OnCheckedChangeListener() {

            @Override
            public void onCheckedChanged(RadioGroup group, int checkedId) {
                switch(checkedId){
                    case R.id.nan:
                        Toast.makeText(MainActivity.this, "选中了"+nan.getText(), Toast.LENGTH_SHORT).show();
                        break;
                    case R.id.nv:
                        Toast.makeText(MainActivity.this, "选中了"+nv.getText(), Toast.LENGTH_SHORT).show();
                        break;
                }
            }
        });
    }
}

四、EditText组件
//XML部分
<!-- inputType:输入的类型,文本,数字,密文等等 -->
<!-- ems:文本框的长度 -->
<EditText android:id="@+id/editText"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:inputType="text"
    android:ems="10"/>

EditText实现明文密文切换

//XML部分
<EditText android:id="@+id/editText"
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    android:singleLine="true"
    android:inputType="textPassword"
    android:hint="请输入密码"/>

<CheckBox android:id="@+id/checkBox"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:text="查看密码"/>
//Java部分
public class MainActivity extends Activity {

    private EditText editText;
    private CheckBox checkBox;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        //初始化控件
        editText = (EditText) findViewById(R.id.editText);
        checkBox = (CheckBox) findViewById(R.id.checkBox);
        //设置光标不可见 //editText.setCursorVisible(false);
        checkBox.setOnCheckedChangeListener(new OnCheckedChangeListener() {

            @Override
            public void onCheckedChanged(CompoundButton buttonView, boolean isChecked) {
                if(isChecked){
                    //显示明文
                    editText.setTransformationMethod(HideReturnsTransformationMethod.getInstance());
                }else{
                    //显示密文
                    editText.setTransformationMethod(PasswordTransformationMethod.getInstance());
                }
                //将光标移动到文字的末尾
                editText.setSelection(editText.getText().length());
            }
        });
    }
}
  • EditText的TextChangedListener监听事件
  • onTextChanged文本变动
  • beforeTextChanged文本变动之前
  • afterTextChanged文本变动之后

五、ImageView显示图片的控件
//XML部分
<!-- background是指背景,src是指内容填充的资源,src如果是png格式等有透明属性的图片的话,
    就会在透明的地方显示出设置的background的背景,而不是黑色或者其他系统默认的填充色等 -->
<ImageView android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:src="@drawable/ic_launcher"
        android:background="#ffff00"/>
//Java部分
public class MainActivity extends Activity {

    private ImageView imgView;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        //初始化控件
        imgView = (ImageView) findViewById(R.id.imgView);
        imgView.setOnClickListener(new OnClickListener() {

            @Override
            public void onClick(View v) {
                Toast.makeText(MainActivity.this, "点击了ImageView", Toast.LENGTH_SHORT).show();
            }
        });
    }
}

六、ImageButton来响应控件的点击效果
//XML部分
<ImageButton android:id="@+id/imgBtn"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:src="@drawable/ic_launcher"/>

打开App,阅读手记
0人推荐
发表评论
随时随地看视频慕课网APP