单选按钮:
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) {
}
});
}
}