Skip to content

Android常见界面控件

3.1 简单控件的使用

3.1.1 Button的使用

Button控件表示按钮,它继承自TextView控件,既可以显示文本,又可以显示图片,同时也允许用户通过点击来执行操作,当Button控件被点击时,被按下与弹起的背景会有一个动态的切换效果,这个效果就是点击效果 。

3.1.1.2 点击事件实现方式

  1. 在布局文件中指定Button控件的onClick属性方式
java
//在layout文件中指定onClick属性

android:onClick="click"

//在Activity中实现这个click方法

public void click(View v){
    Log.i("指定onClick属性方式", "button is clicked");
  }

注意

Activity中实现的方法名称要与onClick属性设置的名称一致

  1. 匿名内部类方式
java
//在Activity中添加匿名内部类
btn.setOnClickListener(new View.OnClickListener() {
    @Override
    public void onClick(View v) {
        Log.i("匿名内部类方式", "button  is clicked");
    }
});
  1. 接口方式
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;
        }
    }
}

Released under the MIT License.