Android笔记
——各类控件的使用(控件)-下拉框
【若对该知识点有更多想了解的,欢迎私信博主~~】
下拉框:Spinner
属性:
XML属性 | 说明 |
---|---|
layout_width | 布局宽度 |
layout_height | 布局高度 |
background | 背景 |
entries | 使用数组资源设置该下拉列表框的列表项 |
paddingHorizontal | 下拉框内填充距离 |
popupBackground | 弹出背景 |
spinnerMode | 设置下拉框弹出位置(dropdown 显示框下面显示;dialog 下拉列表弹出形式) |
注:有的手机设置下拉框弹出位置可能出现一种情况:下拉框遮挡住了Spinner的显示框,将android:overlapAnchor=”false” 。 这个属性默认是true。改为false即可。
填充数据:
-
方法一:使用entries填充
-
建立array数组(res/values)
<?xml version="1.0" encoding="utf-8"?> <resources> <string-array name="custom"> <item>按时间收费</item> <item>按次数收费</item> </string-array> </resources>
-
XML文件中引用
<Spinner android:id="@+id/sp" android:layout_width="400dp" android:layout_height="52dp" android:background="#ccc" android:entries="@array/custom" android:paddingHorizontal="10dp" android:popupBackground="#de1b1b"> </Spinner>
-
-
方法二:主代码中添加
-
设置Spinner单个文本框的样式
<?xml version="1.0" encoding="utf-8"?> <TextView xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="match_parent" android:layout_height="match_parent" android:textSize="30sp" android:singleLine="true" android:textColor="#4552dc" android:background="#c91d1d" android:gravity="right" //文字在文本框内居右 android:layout_gravity="center"//文本框在下拉框内居中 />
-
主代码书写下拉框适配器
Spinner spinner; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main26); //绑定控件 spinner=findViewById(R.id.sp); //建立下拉选项 String[] array = {"按时间收费", "按次数收费"}; //书写适配器 ArrayAdapter<String> arrayAdapter = new ArrayAdapter<>(this, R.layout.spinner, array); //下拉框赋适配器 spinner.setAdapter(arrayAdapter); }
-
高级方法:选项更改时触发
Spinner spinner;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main26);
//绑定控件
spinner=findViewById(R.id.sp);
spinner.setOnItemSelectedListener(new AdapterView.OnItemSelectedListener() {
//adapterView就是父控件spinner
//view就是spinner内填充的textview,id=@android:id/text1
//position是值所在数组的位置
//id是值所在行的位置,一般来说与positin一致
@Override
public void onItemSelected(AdapterView<?> adapterView, View view, int i, long l) {
Toast.makeText(Main26Activity.this, "选项发生改变", Toast.LENGTH_SHORT).show();
}
@Override
public void onNothingSelected(AdapterView<?> adapterView) {
}
});
}
注:更改选项的方法不是setOnItemClickListener,否则会报‘java.lang.RuntimeException: setOnItemClickListener cannot be used with a spinner.’
备注:一些常用的监听。
RadioGroup-->group.setOnCheckedChangeListener ->new OnCheckedChangeListener()->onCheckedChanged
CheckBox--> setOnCheckedChangeListener
上面虽然名字一样,但是包是不一样的。
GridView setOnItemClickListener. 因为GridView 就是继承了listView 的,所以两个是相同的。
listView 是setOnItemClickListener
Spinner--> sp_province.setOnItemSelectedListener->new OnItemSelectedListener()-onItemSelected