java代码
CheckBox控件–多选项
import androidx.appcompat.app.AppCompatActivity;
import android.os.Bundle;
import android.widget.CheckBox;
import android.widget.CompoundButton;
import android.widget.Toast;
public class CheckBoxActivity extends AppCompatActivity {
private CheckBox mCb5, mCb6, mCb7;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_check_box);
mCb5 = findViewById(R.id.cb_5);
mCb6 = findViewById(R.id.cb_6);
mCb7 = findViewById(R.id.cb_7);
mCb5.setOnCheckedChangeListener(new CompoundButton.OnCheckedChangeListener() {
@Override
public void onCheckedChanged(CompoundButton buttonView, boolean isChecked) {
Toast.makeText(CheckBoxActivity.this, isChecked?"mCb5选中":"mCb5未选中", Toast.LENGTH_SHORT).show();
}
});
}
}
重复循环写同样的代码,导致带可读性下降;
import androidx.appcompat.app.AppCompatActivity;
import android.os.Bundle;
import android.widget.CheckBox;
import android.widget.CompoundButton;
import android.widget.Toast;
public class CheckBoxActivity extends AppCompatActivity {
private CheckBox mCb5, mCb6, mCb7;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_check_box);
mCb5 = findViewById(R.id.cb_5);
mCb6 = findViewById(R.id.cb_6);
mCb7 = findViewById(R.id.cb_7);
setCheckedChangedlisteners();
}
private void setCheckedChangedlisteners(){
OnCheckedChanged onCheckedChanged = new OnCheckedChanged();
mCb5.setOnCheckedChangeListener(onCheckedChanged);
mCb6.setOnCheckedChangeListener(onCheckedChanged);
mCb7.setOnCheckedChangeListener(onCheckedChanged);
}
private class OnCheckedChanged implements CompoundButton.OnCheckedChangeListener{
@Override
public void onCheckedChanged(CompoundButton buttonView, boolean isChecked) {
// toast显示功能实现.
Toast.makeText(CheckBoxActivity.this, isChecked?"选中":"未选中", Toast.LENGTH_SHORT).show();
}
}
}
<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent">
<TextView
android:id="@+id/tv_1"
android:layout_height="60dp"
android:layout_width="match_parent"
android:text="下面说法正确的有"
android:textColor="@color/black"
android:textSize="20dp"
android:gravity="center_vertical"
android:layout_marginStart="10dp"
android:padding="5dp"
/>
<RadioGroup
android:id="@+id/rg_3"
android:layout_height="wrap_content"
android:layout_width="wrap_content"
android:paddingLeft="15dp"
android:layout_below="@+id/tv_1">
<CheckBox
android:id="@+id/cb_1"
android:layout_height="match_parent"
android:layout_width="match_parent"
android:text="吸烟有害健康."
android:textSize="16dp"
android:paddingEnd="10dp"
/>
<CheckBox
android:id="@+id/cb_2"
android:layout_height="match_parent"
android:layout_width="match_parent"
android:text="公共场合禁止吸烟."
android:textSize="16sp"
android:paddingEnd="10dp"/>
<CheckBox
android:id="@+id/cb_3"
android:layout_height="match_parent"
android:layout_width="match_parent"
android:text="珍爱生命,远离暴力."
android:paddingEnd="10dp"
android:textSize="16sp"/>
<CheckBox
android:id="@+id/cb_4"
android:layout_height="match_parent"
android:layout_width="match_parent"
android:text="赚钱是王道,为赚钱可不择手段."
android:paddingEnd="10dp"
android:textSize="16sp"/>
</RadioGroup>
<LinearLayout
android:id="@+id/line"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical"
android:padding="15dp"
android:layout_marginTop="260dp">
<TextView
android:id="@+id/tv_2"
android:layout_width="match_parent"
android:layout_height="40dp"
android:text="你的爱好是:"
android:textSize="20sp"
android:textStyle="bold"
android:textColor="@color/black"
/>
<CheckBox
android:id="@+id/cb_5"
android:layout_height="wrap_content"
android:layout_width="match_parent"
android:button="@drawable/check_box_background"
android:paddingLeft="10dp"
android:text="吃饭"
android:textSize="16sp" />
<CheckBox
android:id="@+id/cb_6"
android:layout_height="wrap_content"
android:layout_width="match_parent"
android:button="@drawable/check_box_background"
android:paddingLeft="10dp"
android:text="睡觉"
android:textSize="16sp" />
<CheckBox
android:id="@+id/cb_7"
android:layout_height="wrap_content"
android:layout_width="match_parent"
android:button="@drawable/check_box_background"
android:paddingLeft="10dp"
android:text="打豆豆"
android:textSize="16sp" />
</LinearLayout>
</RelativeLayout>
(1).文字靠左(右)边界太近在画面中显示效果不佳时可以使用padding操作如:**android:paddingLeft="10dp"**表示勾选框和文字距离10dp
(2).空间和界面之间的距离太近需要隔开距离时,同样通过设置padding实现,区别在于padding的位置在布局中设置.
(3).CheckBox同RadioButton同样默认会出现一个勾选框,如图所示,中方框和圆圈.若不想出现或者自定义如CheckBox你的爱好里那些,可以使用**android:button="@drawable/check_box_background"**
实现.若要求无效果**android:button="@null"**
;
其中
**check_box_background**
的实现是在**drawable**
中新建**selector**
提前创建.
<?xml version="1.0" encoding="utf-8"?>
<selector xmlns:android="http://schemas.android.com/apk/res/android">
<item android:state_checked="true" android:drawable="@drawable/ic_baseline_thumb_up_24"/>
<item android:state_checked="false" android:drawable="@drawable/ic_baseline_thumb_down_alt_24"/>
</selector>
MainActivity的多功能切换:
①**android:textAllCaps="false"**
非所有字母均大写.
②**android:maxLines="1"**
最大限制只有一行.
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:background="@drawable/background_1"
android:orientation="vertical">
<Button
android:id="@+id/bnt_textview_1"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text=" 跳 转 "
android:maxLines="1"
android:textColor="@color/black"
android:textSize="20sp"
android:layout_marginTop="100dp"
android:layout_gravity="center"/>
<Button
android:id="@+id/rbtn_textview_1"
android:layout_height="wrap_content"
android:layout_width="wrap_content"
android:layout_gravity="center"
android:layout_marginTop="10dp"
android:text="RaButton"
android:textColor="@color/black"
android:textAllCaps="false"
android:textStyle="bold"
/>
<Button
android:id="@+id/Cbnt_textview_1"
android:layout_height="wrap_content"
android:layout_width="wrap_content"
android:layout_margin="20dp"
android:text="CheckBox"
android:textAllCaps="false"
android:textColor="@color/black"
android:layout_gravity="center"
/>
<Button
android:id="@+id/Image_view_1"
android:layout_height="wrap_content"
android:layout_width="wrap_content"
android:layout_margin="0dp"
android:text="ImageView"
android:textAllCaps="false"
android:textColor="@color/black"
android:layout_gravity="center"
/>
<LinearLayout
android:layout_width="match_parent"
android:layout_height="50dp"
android:orientation="horizontal"
android:paddingLeft="20dp"
android:paddingRight="20dp"
android:layout_marginTop="30dp">
<Button
android:id="@+id/bnt_textview_2"
android:layout_height="match_parent"
android:layout_width="match_parent"
android:layout_weight="1"
android:text="跳转按钮"
android:textColor="#996671"
android:background="@drawable/bg_left_bnt"
android:backgroundTint="#FFFFFF"
/>
<Button
android:id="@+id/bnt_textview_3"
android:layout_height="match_parent"
android:layout_width="match_parent"
android:layout_weight="1"
android:layout_marginStart="10dp"
android:background="@drawable/bg_right_bnt"
android:text="旋转按钮"
style="?android:attr/buttonBarButtonStyle" />
</LinearLayout>
</LinearLayout>
效果Java实现功能跳转的代码:
import android.annotation.SuppressLint;
import android.content.Intent;
import android.os.Bundle;
import android.provider.ContactsContract;
import android.view.View;
import android.widget.Button;
import android.widget.ImageView;
import android.widget.TextView;
public class MainActivity extends AppCompatActivity {
private Button mBnt, mBnt1, mBntEdtext, mBntRationButton;
private Button mCbnt;
private Button mIt;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
mBnt = findViewById(R.id.bnt_textview_1);
mBnt1 = findViewById(R.id.bnt_textview_2);
mBntEdtext = findViewById(R.id.bnt_textview_3);
mBntRationButton = findViewById(R.id.rbtn_textview_1);
mCbnt = findViewById(R.id.Cbnt_textview_1);
mIt = findViewById(R.id.Image_view_1);
mCbnt.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
Intent intent = null;
intent = new Intent(MainActivity.this, ImageViewActivity.class)
}
});
}
}
改进后的代码实现:
import androidx.appcompat.app.AppCompatActivity;
import android.annotation.SuppressLint;
import android.content.Intent;
import android.os.Bundle;
import android.provider.ContactsContract;
import android.view.View;
import android.widget.Button;
import android.widget.ImageView;
import android.widget.TextView;
public class MainActivity extends AppCompatActivity {
private Button mBnt, mBnt1, mBntEdtext, mBntRationButton;
private Button mCbnt;
private Button mIt;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
mBnt = findViewById(R.id.bnt_textview_1);
mBnt1 = findViewById(R.id.bnt_textview_2);
mBntEdtext = findViewById(R.id.bnt_textview_3);
mBntRationButton = findViewById(R.id.rbtn_textview_1);
mCbnt = findViewById(R.id.Cbnt_textview_1);
mIt = findViewById(R.id.Image_view_1);
}
private void setListeners(){
OnClick onClick = new OnClick();
mBnt.setOnClickListener(onClick);
mBnt1.setOnClickListener(onClick);
mBntEdtext.setOnClickListener(onClick);
mBntRationButton.setOnClickListener(onClick);
mCbnt.setOnClickListener(onClick);
mIt.setOnClickListener(onClick);
}
private class OnClick implements View.OnClickListener{
@SuppressLint("NonConstantResourceId")
@Override
public void onClick(View v) {
Intent intent = null;
switch (v.getId()){
case R.id.bnt_textview_1:
intent = new Intent(MainActivity.this, TextViewActivity.class);
break;
case R.id.bnt_textview_2:
intent = new Intent(MainActivity.this, ButtonActivity.class);
break;
case R.id.bnt_textview_3:
intent = new Intent(MainActivity.this, EditTextActivity2.class);
break;
case R.id.rbtn_textview_1:
intent = new Intent(MainActivity.this, RationButtonActivity.class);
break;
case R.id.Cbnt_textview_1:
intent = new Intent(MainActivity.this, CheckBoxActivity.class);
break;
case R.id.Image_view_1:
intent = new Intent(MainActivity.this, ImageViewMainActivity.class);
break;
}
startActivity(intent);
}
}
}