Android 单选按钮 下拉列表框


单选按钮:


1.特点:

  • 单选按钮一组是互斥的,
  • 使用RadioGroup实现互斥

2.RadioGroup继承LinnerLayout: 所以可以使用linearLayout的相关属性,
例如:
orientation,,,,
RadioGroup默认方向是垂直。LinearLayout默认水平方向的。

3.对于单选按钮的事件监听,
通常加载到RadioGroup,
接口:RadioGroup.OnCheckedChangeListener
实现接口的方法

 radiogroup.setOnCheckedChangeListener(new RadioGroup.OnCheckedChangeListener() {
            @Override
            public void onCheckedChanged(RadioGroup group, int checkedId) {
//                第一个参数是按钮组对象,,第二个参数被选择的单选按钮的id
            }
        });

4.开关按钮:Switch控件

  • 类名Swith
  • 状态,打开和关闭,默认情况下,有默认的样式,可以经过一些属性进行修改、
  • 常用的属性
  • 开关的显示效果,由thumb滑块和track轨迹,,可以用select shape来设计样子。
 <!-- 开关按钮-->
    <Switch
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="开关按钮"  //开关按钮前面的文字信息
        
        android:showText="true" //开关按钮上的 off on 提示信息
        android:textOn="开"  //当按钮为开,,,按钮图标提示开
        android:textOff="关"  //当按钮为开,,,按钮图标提示关
        />

5.按钮图标:

  • andrord:button 图片要求不高 跟文字间距也不要求的时候使用
  • android :background 用于较大的图标显示
  • android:drawableleft 使用的时候得把默认的单选按钮图标隐藏,图标和文字之间有间隔要求的时候可以使用
 <RadioButton
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:id="@+id/rd_1"
            android:text="选项11"
            android:button="@null"
            android:drawableLeft="@drawable/logo"
           android:drawablePadding="20dp" //用来设置图标和文本间的距离
        />

效果图:
在这里插入图片描述


下拉列表框:Spinner


1.作用:选择
2.显示效果: android:spinnerMode=“dropdown” 下拉列表dropdown,弹出对话框dialog
3.类及继承关系 Spinner直接父类AbsSpinner 间接父类AdapterView ,,, Adapter适配器
4.怎么把数据放进去:

  • 静态方法:将下拉列表中内容放在资源文件string中,
<string-array name="content">
    <item>北京</item>
    <item>上海</item>
    <item>南京</item>
    <item>广州</item>
</string-array>

在MainActivity.xml文件中写

spinnerMode写下拉列表框的形式dropdown,,,,对话框形式为dialog
android:entries="@array/content" string文件中定义过的数组

 <Spinner
        android:id="@+id/spinner"
        android:spinnerMode="dropdown"
        android:entries="@array/content"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content">
    </Spinner>
  • 动态的方式:
  • 界面中放好Spinner控件,
  • 准备好数据,,可以是数组,也可以是集合ArrayList<Stirng>
  • 把数据放到控件上去,需要使用适配器ArrayAdept

MainActivity.xml文件中:

 <Spinner
        android:id="@+id/spinner"
        android:spinnerMode="dropdown"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content">
    </Spinner>

在java文件中

//定义数组
        String[] ctype=new String[]{"+1","+2","+3","+4","+5"};
//适配器,,第一个参数this上下文对象,第二个参数提供布局 自带的布局,,第三个是数组对象
        ArrayAdapter<String> adapter=new ArrayAdapter<String>(this,android.R.layout.simple_spinner_item,ctype);

        spinner =(Spinner)findViewById(R.id.spinner);
        //给spinner添加适配器
        spinner.setAdapter(adapter);

在这里插入图片描述

理解适配器:

列表控件:
两部分,
显示Spinner-----------外盒
数据---------------------内容
适配器就是把数据包装好,,适配器起到包数据的作用。


适配器下拉列表,,,添加不同于默认的显示效果



下拉列表事件监听:


当列表项被选中的时候触发什么事件:
在java文件中,给spinner下拉框对象添加选择事件:
spinner.setOnItemSelectedListener(new AdapterView.OnItemSelectedListener() {,
里面有两个方法:一个是被选中的,,一个是没被选
,,,}

package com.example.syx.spinner;

import android.annotation.TargetApi;
import android.os.Build;
import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.view.Menu;
import android.view.MenuItem;
import android.view.View;
import android.widget.AdapterView;
import android.widget.ArrayAdapter;
import android.widget.ImageView;
import android.widget.Spinner;
import android.widget.Toast;

public class MainActivity extends AppCompatActivity{

    private Spinner spinner;
    private ArrayAdapter<String> adapter;

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


        String[] arr=new String[]{"山东","江苏","浙江","河北"};
        adapter = new ArrayAdapter(this,R.layout.spinner_item,arr);

        adapter.setDropDownViewResource(R.layout.spinner_item_one);
        spinner.setDropDownVerticalOffset(100);
        //spinner.setDropDownWidth(800);

        spinner.setAdapter(adapter);

 spinner.setOnItemSelectedListener(new AdapterView.OnItemSelectedListener() {
            @Override
            public void onItemSelected(AdapterView<?> parent, View view, int position, long id) {
              //第一个参数,,,当前选中的spinner对象,
              //第三个,position 选中列表项当前所在的位置,position能够拿到列表项的额位置,也就相当于定义的spinner 显示内容的数组位置,,,
              //第四个参数id,选择选中参数所在的行
   

Toast.makeText(MainActivity.this,"你选择的区号是:"+arr[position], Toast.LENGTH_SHORT).show();


           
            }

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

            }
        });
	}


}

发布了57 篇原创文章 · 获赞 1 · 访问量 972

猜你喜欢

转载自blog.csdn.net/qq_45844648/article/details/105217103