文章目录

  • 1、下拉列表
  • 2、日期选择器
  • 3、时间选择器
  • 4、单项选择
  • 5、多项选择
  • 6、TextView、EditView、Button、ImageView
  • 7、ProgressBar(进度条)
  • 8、AlertDialog


1、下拉列表

如何创建下拉列表、如何为下拉列表适配数据源,以及如何侦听下拉列表的选择事件

布局文件:

<LinearLayout 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="match_parent"
    tools:context=".MainActivity">

    <Spinner
        android:id="@+id/spinner"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        />
</LinearLayout>

java类文件:

public class MainActivity extends AppCompatActivity {
    private Spinner s;
    private String[] dataSource = new String[]{"lala","jjj","uuuu"};

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
         
        s = (Spinner)findViewById(R.id.spinner);

        //为下拉列表适配数据源
        s.setAdapter(new ArrayAdapter<String>(this,android.R.layout.simple_expandable_list_item_1,dataSource));
        //侦听下拉列表的选择事件
        s.setOnItemSelectedListener(new AdapterView.OnItemSelectedListener() {
            @Override
            public void onItemSelected(AdapterView<?> parent, View view, int position, long id) {
                System.out.println("用户选择的是:"+dataSource[position]);
            }

            @Override
            public void onNothingSelected(AdapterView<?> parent) {

            }
        });
    }
}

2、日期选择器

布局文件:

<LinearLayout 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="match_parent"
    android:orientation="vertical"
    tools:context=".ChooseADate">
    <Button
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="0000-00-00"
        android:id="@+id/btnChooseDate"
        />

</LinearLayout>

java类文件:

public class ChooseADate extends AppCompatActivity {
    private Button btnChooseDate;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_choose_adate);

        btnChooseDate = (Button)findViewById(R.id.btnChooseDate);
        btnChooseDate.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                new DatePickerDialog(ChooseADate.this, new DatePickerDialog.OnDateSetListener() {
                    @Override
                    public void onDateSet(DatePicker view, int year, int month, int dayOfMonth) {
                        String theDate = String.format("%d-%d-%d",year,month+1,dayOfMonth);
                        btnChooseDate.setText(theDate);
                        System.out.println(theDate);
                    }
                },2015,1,2).show();
            }
        });




    }
}

3、时间选择器

关键代码:

btnChooseTime.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {

                new TimePickerDialog(ChooseTime.this, new TimePickerDialog.OnTimeSetListener() {
                    @Override
                    public void onTimeSet(TimePicker view, int hourOfDay, int minute) {
                        System.out.println("执行了");
                        String theTime = String.format("%d:%d",hourOfDay,minute);
                        System.out.println(theTime);
                        btnChooseTime.setText(theTime);


                    }
                },0,0,true).show();
            }
        });

4、单项选择

<LinearLayout 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="match_parent"
    android:orientation="vertical"
    tools:context=".SingleChoose">
    <TextView
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="世界上最大的海洋是什么?"
        />
    <RadioGroup
        android:layout_width="match_parent"
        android:layout_height="wrap_content">

        <RadioButton
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:text="A.太平洋"
            android:id="@+id/rA"
            />
        <RadioButton
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:text="B.大西洋"
            android:id="@+id/rB"
            />
        <RadioButton
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:text="C.北海"
            android:id="@+id/rC"
            />
        <RadioButton
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:text="D.南海"
            android:id="@+id/rD"
            />
    </RadioGroup>
    <Button
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="提交"
        android:id="@+id/submit"
        />

</LinearLayout>
public class SingleChoose extends AppCompatActivity {
    private Button btnSubmit;
    private RadioButton rA;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_single_choose);

        btnSubmit = findViewById(R.id.submit);
        rA = findViewById(R.id.rA);
        btnSubmit.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                if(rA.isChecked()){
                    Toast.makeText(SingleChoose.this,"所选是正确的",Toast.LENGTH_SHORT).show();
                }else{
                    Toast.makeText(SingleChoose.this,"所选是错误的",Toast.LENGTH_SHORT).show();
                }

            }
        });
    }
}

5、多项选择

<LinearLayout 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="match_parent"
    android:orientation="vertical"
    tools:context=".MulChoose">

    <TextView
        android:id="@+id/textView"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="你喜欢哪些水果?"
        tools:layout_editor_absoluteX="94dp"
        tools:layout_editor_absoluteY="25dp" />



    <CheckBox
        android:id="@+id/checkBox1"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="香蕉" />
    <CheckBox
        android:id="@+id/checkBox2"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="苹果" />

    <CheckBox
        android:id="@+id/checkBox3"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="樱桃" />

    <CheckBox
        android:id="@+id/checkBox4"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="梨" />
    <TextView
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:textAppearance="@style/TextAppearance.AppCompat.Large"
        android:text="Large Text"
        android:id="@+id/result"
        />
</LinearLayout>
public class MulChoose extends AppCompatActivity implements CompoundButton.OnCheckedChangeListener {
    private CheckBox checkBox1,checkBox2,checkBox3,checkBox4;
    private TextView result;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_mul_choose);

        checkBox1 = findViewById(R.id.checkBox1);
        checkBox2 = findViewById(R.id.checkBox2);
        checkBox3 = findViewById(R.id.checkBox3);
        checkBox4 = findViewById(R.id.checkBox4);

        result = findViewById(R.id.result);

        checkBox1.setOnCheckedChangeListener(this);
        checkBox2.setOnCheckedChangeListener(this);
        checkBox3.setOnCheckedChangeListener(this);
        checkBox4.setOnCheckedChangeListener(this);

    }

    @Override
    public void onCheckedChanged(CompoundButton buttonView, boolean isChecked) {
        String str = "你喜欢:";
        if(checkBox1.isChecked()){
            str = str+checkBox1.getText()+",";
        }
        if(checkBox2.isChecked()){
            str = str+checkBox2.getText()+",";
        }
        if(checkBox3.isChecked()){
            str = str+checkBox3.getText()+",";
        }
        if(checkBox4.isChecked()){
            str = str+checkBox4.getText();
        }

        result.setText(str);

    }
}

6、TextView、EditView、Button、ImageView

TextView:主要用于在界面上显示一段文本信息,android:gravity来指定文字的对齐方式,可选值有top/bottom/start/end/center;android:textColorandroid:textSize可以对文字的颜色和大小进行修改;

EditView:EditText是程序用于和用户进行交互的一个重要控件,它允许用户在控件里输入和编辑内容,并可以在程序中对这些内容进行处理;android:hint属性可以指定一段提示性文本,在用户输入内容时,这段文本就会自动消失;

Button:系统默认会将按钮上的英文字母全部转换成大写,可以通过*android:textAllCaps = 'false"*属性可以保留指定原始的文字内容;

ImageView:用于在图片上展示图片的一个控件,图片资源通常放在drawable下;

7、ProgressBar(进度条)

用于在界面上显示一个进度条,表示程序正在加载一些数据
(1)android:visibility属性可以来设置进度的可见于不可见
(2)style可以来设置进度条的样式:圆形进度条或者水平进度条,默认是圆形进度条,下面的属性可以修改为水平进度条

style="@style/Widget.AppCompat.ProgressBar.Horizontal"

(3)通过代码来控制进度条是否可见,以及动态的更改进度条的进度

btn.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                if(progressBar.getVisibility()==View.VISIBLE){
                    progressBar.setVisibility(View.GONE);
                }else{
                    progressBar.setVisibility(View.VISIBLE);
                }
            }
        });

        btnT.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                progressBar.setProgress(progressBar.getProgress()+10);
            }
        });

8、AlertDialog

AlertDialog可以在界面弹出一个对话框,这个对话框置顶于所有元素之上,能够屏蔽其他控件的交互能力,因此,AlertDialog一般用于提示非常重要的信息或警告信息;
测试代码:

protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_learn_alert_dialog);

        btnCeshi = findViewById(R.id.btnCeshi);
        btnCeshi.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                AlertDialog.Builder builder = new AlertDialog.Builder(LearnAlertDialog.this);
                builder.setTitle("This ia a dialog")
                        .setMessage("you should think successfully")
                        .setPositiveButton("OK", new DialogInterface.OnClickListener() {
                            @Override
                            public void onClick(DialogInterface dialog, int which) {

                            }
                        })
                        .setNegativeButton("cancel", new DialogInterface.OnClickListener() {
                            @Override
                            public void onClick(DialogInterface dialog, int which) {

                            }
                        })
                        .show();
            }
        });

    }