Android Studio 制作一个app_学习记录6
Scrollview和单选框、复选框
- scrollview
- 不同于linearlayout,srollview布局可以滑动,适合屏幕长度显示不完全的界面
- 注意:除了设置orientation之外,scrollview里面只能有一个主要的空间
- 解决方法: 用一个总的linearlayout来盛放所有的控件
- 注意:
- 如果android:orientation="vertical" ,则高度应该设置为wrap_content,表示需要多高就有多高
- 如果android:orientation="horizontal" ,则宽度应该设置为wrap_content,表示需要多宽就有多宽
2. radiobutton单选框
用RadioGroup来实现单选框, radiobutton是在RadioGroup中。
<RadioGroup
android:id="@+id/rg_1"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:orientation="vertical"
android:layout_gravity="center"
android:layout_marginTop="20dp"
<RadioButton
android:id="@+id/rb_1"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="健身"
android:textColor="@color/colorRed"
android:textSize="20sp"/>
<RadioButton
android:id="@+id/rb_2"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="读书"
android:textColor="@color/colorRed"
android:textSize="20sp"/>
</RadioGroup>
3. checkbox复选框
用CheckBox来实现复选框
<CheckBox
android:id="@+id/cb_1"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="小米"
android:layout_marginTop="10dp"
android:textSize="30sp"/>
<CheckBox
android:id="@+id/cb_2"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="面食"
android:layout_marginTop="10dp"
android:textSize="30sp"/>
<CheckBox
android:id="@+id/cb_3"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="火锅"
android:layout_marginTop="10dp"
android:textSize="30sp"/>
<CheckBox
android:id="@+id/cb_4"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="大米"
android:layout_marginTop="10dp"
android:textSize="30sp"/>
4. 对应监听事件
表示用来监听哪个被选中。
...
mRG1 = findViewById(R.id.rg_1);
mCB1 = findViewById(R.id.cb_1);
mCB2 = findViewById(R.id.cb_2);
//单选框radiogroup的监听事件
mRG1.setOnCheckedChangeListener(new RadioGroup.OnCheckedChangeListener() {
@Override
public void onCheckedChanged(RadioGroup radioGroup, int i) {
RadioButton radioButton = radioGroup.findViewById(i);
Toast.makeText(StudyActivity.this,radioButton.getText(),Toast.LENGTH_SHORT).show();
//复选框checkbox的监听事件
mCB1.setOnCheckedChangeListener(new CompoundButton.OnCheckedChangeListener() {
@Override
public void onCheckedChanged(CompoundButton compoundButton, boolean b) {
Toast.makeText(StudyActivity.this,b?"选中":"未选中",Toast.LENGTH_SHORT).show();
});
具体代码讲解
以上一节的activity_study.xml为例。
<ScrollView xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:orientation="vertical"
tools:context=".StudyActivity">
</ScrollView>
例如在<ScrollView>控件中,这里的android:orientation="vertical"设置为了vertical,那么对应的高度应该设置为wrap_content,这样就可以实现垂直方向上的无限滑动。
<?xml version="1.0" encoding="utf-8"?>
<ScrollView xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:orientation="vertical"
tools:context=".StudyActivity">
<!--这里的android:layout_height="wrap_content" ,同时下面的linearLayout的布局
高度也应该设置为 android:layout_height="wrap_content" -->
<LinearLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:orientation="vertical"
<EditText
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="This is StudyActivity"
android:textColor="@color/colorRed"
android:textSize="30sp"
android:layout_gravity="center"/>
<ImageView
android:layout_width="60dp"
android:layout_height="60dp"
android:layout_gravity="center_horizontal"
android:layout_margin="20dp"
android:src="@mipmap/ic_launcher"/>
<ImageView
android:layout_width="60dp"
android:layout_height="60dp"
android:layout_gravity="center_horizontal"
android:layout_margin="20dp"
android:src="@mipmap/ic_launcher"/>
<ImageView
android:layout_width="60dp"
android:layout_height="60dp"
android:layout_gravity="center_horizontal"
android:layout_margin="20dp"
android:src="@mipmap/ic_launcher"/>
<ImageView
android:layout_width="60dp"
android:layout_height="60dp"
android:layout_gravity="center_horizontal"
android:layout_margin="20dp"
android:src="@mipmap/ic_launcher"/>
<ImageView
android:layout_width="60dp"
android:layout_height="60dp"
android:layout_gravity="center_horizontal"
android:layout_margin="20dp"
android:src="@mipmap/ic_launcher"/>
<!-- 单选框放在了RadioGroup中-->
<RadioGroup
android:id="@+id/rg_1"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:orientation="vertical" # 表示选项是垂直排列的
android:layout_gravity="center"
android:layout_marginTop="20dp" # 距离上一个控件20dp
<RadioButton
android:id="@+id/rb_1"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="健身"
android:textColor="@color/colorRed"
android:textSize="20sp"/> #文字大小
<RadioButton
android:id="@+id/rb_2"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="读书"
android:textColor="@color/colorRed"
android:textSize="20sp"/>
<RadioButton
android:id="@+id/rb_3"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="游泳"
android:textColor="@color/colorRed"
android:textSize="20sp"/>
<RadioButton
android:id="@+id/rb_4"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="吃饭"
android:textColor="@color/colorBlack"
android:textSize="20sp"
android:checked="true"/> # checked=True表示默认是选上的
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:orientation="vertical"
android:layout_gravity="center_horizontal">
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="午餐是?"
android:textColor="@color/colorBlack"
android:textSize="30sp"
android:layout_marginTop="20dp"
android:layout_gravity="center"/>
<CheckBox # 复选框
android:id="@+id/cb_1"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="小米"
android:layout_marginTop="10dp"
android:textSize="30sp"/>
<CheckBox
android:id="@+id/cb_2"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="面食"
android:layout_marginTop="10dp"
android:textSize="30sp"/>
<CheckBox
android:id="@+id/cb_3"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="火锅"
android:layout_marginTop="10dp"
android:textSize="30sp"/>
<CheckBox
android:id="@+id/cb_4"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="大米"
android:layout_marginTop="10dp"
android:textSize="30sp"/>
</LinearLayout>
</LinearLayout>
</ScrollView>
activity_study.xml对应的StudyActivity.java如下。
package com.example.demo1;
import androidx.appcompat.app.AppCompatActivity;
import android.os.Bundle;
import android.provider.ContactsContract;
import android.widget.CheckBox;
import android.widget.CompoundButton;
import android.widget.RadioButton;
import android.widget.RadioGroup;
import android.widget.Toast;
public class StudyActivity extends AppCompatActivity {
private RadioGroup mRG1;
private CheckBox mCB1;
private CheckBox mCB2;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_study);
mRG1 = findViewById(R.id.rg_1);
mCB1 = findViewById(R.id.cb_1);
mCB2 = findViewById(R.id.cb_2);
mRG1.setOnCheckedChangeListener(new RadioGroup.OnCheckedChangeListener() {
@Override
public void onCheckedChanged(RadioGroup radioGroup, int i) {
RadioButton radioButton = radioGroup.findViewById(i);
Toast.makeText(StudyActivity.this,radioButton.getText(),Toast.LENGTH_SHORT).show();
mCB1.setOnCheckedChangeListener(new CompoundButton.OnCheckedChangeListener() {
@Override
public void onCheckedChanged(CompoundButton compoundButton, boolean b) {
Toast.makeText(StudyActivity.this,b?"选中":"未选中",Toast.LENGTH_SHORT).show();
mCB2.setOnCheckedChangeListener(new CompoundButton.OnCheckedChangeListener() {
@Override
public void onCheckedChanged(CompoundButton compoundButton, boolean b) {