Android常见界面控件
3.1 简单控件的使用
3.1.1 Button的使用
Button控件表示按钮,它继承自TextView控件,既可以显示文本,又可以显示图片,同时也允许用户通过点击来执行操作,当Button控件被点击时,被按下与弹起的背景会有一个动态的切换效果,这个效果就是点击效果 。
3.1.1.2 点击事件实现方式
- 在布局文件中指定Button控件的onClick属性方式
java
//在layout文件中指定onClick属性
android:onClick="click"
//在Activity中实现这个click方法
public void click(View v){
Log.i("指定onClick属性方式", "button is clicked");
}
注意
Activity中实现的方法名称要与onClick属性设置的名称一致
- 匿名内部类方式
java
//在Activity中添加匿名内部类
btn.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
Log.i("匿名内部类方式", "button is clicked");
}
});
- 接口方式
java
//设置Button控件的点击监听事件
btn.setOnClickListener(this);
//接着当前Activity实现OnClickListener接口
public class MainActivity extends AppCompatActivity implements View.onClickListener
//然后实现OnClickListener接口中的方法
@Override
public void onClick(View v) {
Log.i("接口方式", "button is clicked");
}
3.1.2 RadioButton单选组合框
js
<RadioGroup
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:orientation="vertical">
<RadioButton
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:textSize="25dp"
android:text="男"/>
<RadioButton
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:textSize="25dp"
android:text="女"/>
</RadioGroup>
3.2 ListView列表展示数据
ListView以列表的形式展示数据内容,并且能够根据列表的高度自适应屏幕显示。
属性名称 | 功能描述 |
---|---|
android:listSelector | 当条目被点击后,改变条目的背景颜色 |
android:divider | 设置分割线的颜色 |
android:dividerHeight | 设置分割线的高度 |
android:scrollbars | 是否显示滚动条 |
android:fadingEdge | 去掉上边和下边的黑色阴影 |
3.2.1 实战演练
xml
# activity_main.xml
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical">
<TextView
android:id="@+id/myTextView"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="音乐播放器"
android:textSize="18sp"
android:textColor="#B2DFEE"
android:textStyle="bold"
android:padding="16dp"
android:layout_margin="8dp"
/>
<ListView
android:id="@+id/list_view"
android:layout_width="match_parent"
android:layout_height="match_parent"/>
<ImageView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
/>
</LinearLayout>
# list_item.xml
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:orientation="horizontal"
android:padding="10dp">
<ImageView
android:id="@+id/icon"
android:layout_width="40dp"
android:layout_height="40dp"
android:layout_marginEnd="10dp" />
<LinearLayout
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:orientation="vertical">
<TextView
android:id="@+id/title"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:textSize="18sp" />
<TextView
android:id="@+id/songer"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:textSize="16sp" />
</LinearLayout>
</LinearLayout>
java
package com.example.class_listview;
import android.os.Bundle;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.BaseAdapter;
import android.widget.ImageView;
import android.widget.ListView;
import android.widget.TextView;
import android.widget.Toast;
import androidx.appcompat.app.AppCompatActivity;
public class MainActivity extends AppCompatActivity {
// 1、定义对象
private ListView listView;
private int[] icons = {R.drawable.cq, R.drawable.du, R.drawable.qs, R.drawable.ss, R.drawable.yw, R.drawable.yhsn};
private String[] titles = {"彩券", "渡", "情书", "绅士", "意外", "银河少年"};
private String[] songers = {"薛之谦", "薛之谦", "薛之谦", "薛之谦", "薛之谦", "薛之谦"};
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
listView = findViewById(R.id.list_view);
listView.setAdapter(new MyAdapter());
// 设置点击事件
listView.setOnItemClickListener((parent, view, position, id) -> {
Toast.makeText(MainActivity.this, "点击了: " + titles[position], Toast.LENGTH_SHORT).show();
});
}
private class MyAdapter extends BaseAdapter {
@Override
public int getCount() {
return titles.length;
}
@Override
public Object getItem(int position) {
return titles[position];
}
@Override
public long getItemId(int position) {
return position;
}
@Override
public View getView(int position, View convertView, ViewGroup parent) {
ViewHolder holder;
if (convertView == null) {
convertView = LayoutInflater.from(parent.getContext()).inflate(R.layout.list_item, parent, false);
holder = new ViewHolder();
holder.icon = convertView.findViewById(R.id.icon);
holder.title = convertView.findViewById(R.id.title);
holder.songer = convertView.findViewById(R.id.songer);
convertView.setTag(holder);
} else {
holder = (ViewHolder) convertView.getTag();
}
// 设置图标和标题
holder.icon.setImageResource(icons[position]);
holder.title.setText(titles[position]);
holder.songer.setText(songers[position]);
return convertView;
}
private class ViewHolder {
ImageView icon;
TextView title;
TextView songer;
}
}
}