android.widget
是 Android 开发中用于构建用户界面(UI)的核心包之一。它包含了大量的 UI 控件(如按钮、文本框、列表等),这些控件通常被称为“小部件”(Widget)。android.widget
包中的类大多继承自 android.view.View
,因此它们都具备视图的基本特性。
以下是 android.widget
包中一些常用类的详细介绍:
1. 常用控件
(1) Button
- 用于触发用户交互的按钮。
- 继承自
TextView
。 - 常用属性:
- 示例:
import android.widget.Button;Button button = findViewById(R.id.button); button.setOnClickListener(v -> {Toast.makeText(this, "Button Clicked", Toast.LENGTH_SHORT).show(); });
(2) TextView
- 用于显示文本内容。
- 常用属性:
- 示例:
import android.widget.TextView;TextView textView = findViewById(R.id.textView); textView.setText("Hello, World!");
(3) EditText
- 用于接收用户输入的文本。
- 继承自
TextView
。 - 常用属性:
- 示例:
import android.widget.EditText;EditText editText = findViewById(R.id.editText); String input = editText.getText().toString();
(4) ImageView
- 用于显示图片。
- 常用属性:
- 示例:
import android.widget.ImageView;ImageView imageView = findViewById(R.id.imageView); imageView.setImageResource(R.drawable.my_image);
(5) CheckBox
- 用于多选框。
- 常用属性:
android:checked
:设置默认选中状态。
- 示例:
import android.widget.CheckBox;CheckBox checkBox = findViewById(R.id.checkBox); if (checkBox.isChecked()) {// 复选框被选中 }
(6) RadioButton
和 RadioGroup
- 用于单选按钮组。
- 常用属性:
android:checkedButton
:设置默认选中的单选按钮。
- 示例:
import android.widget.RadioGroup; import android.widget.RadioButton;RadioGroup radioGroup = findViewById(R.id.radioGroup); radioGroup.setOnCheckedChangeListener((group, checkedId) -> {RadioButton radioButton = findViewById(checkedId);Toast.makeText(this, radioButton.getText(), Toast.LENGTH_SHORT).show(); });
(7) Spinner
- 用于下拉选择框。
- 常用属性:
android:entries
:设置下拉选项。
- 示例:
import android.widget.Spinner;Spinner spinner = findViewById(R.id.spinner); ArrayAdapter<String> adapter = new ArrayAdapter<>(this, android.R.layout.simple_spinner_item, items); adapter.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item); spinner.setAdapter(adapter);
(8) ProgressBar
- 用于显示进度。
- 常用属性:
- 示例:
import android.widget.ProgressBar;ProgressBar progressBar = findViewById(R.id.progressBar); progressBar.setProgress(50); // 设置进度
(9) Switch
- 用于开关控件。
- 常用属性:
android:checked
:设置默认开关状态。
- 示例:
import android.widget.Switch;Switch switchButton = findViewById(R.id.switchButton); if (switchButton.isChecked()) {// 开关打开 }
2. 布局控件
android.widget
包中还有一些用于布局的控件,例如:
(1) LinearLayout
- 线性布局,可以水平或垂直排列子视图。
- 常用属性:
android:orientation
:设置排列方向(vertical
或horizontal
)。
- 示例:
<LinearLayoutandroid:layout_width="match_parent"android:layout_height="wrap_content"android:orientation="vertical"><Buttonandroid:id="@+id/button1"android:layout_width="wrap_content"android:layout_height="wrap_content"android:text="Button 1" /><Buttonandroid:id="@+id/button2"android:layout_width="wrap_content"android:layout_height="wrap_content"android:text="Button 2" /> </LinearLayout>
(2) RelativeLayout
- 相对布局,子视图可以相对于父视图或其他子视图定位。
- 常用属性:
- 示例:
<RelativeLayoutandroid:layout_width="match_parent"android:layout_height="wrap_content"><Buttonandroid:id="@+id/button1"android:layout_width="wrap_content"android:layout_height="wrap_content"android:text="Button 1" /><Buttonandroid:id="@+id/button2"android:layout_width="wrap_content"android:layout_height="wrap_content"android:text="Button 2"android:layout_toRightOf="@id/button1" /> </RelativeLayout>
(3) FrameLayout
- 帧布局,子视图可以叠加显示。
- 示例:
<FrameLayoutandroid:layout_width="match_parent"android:layout_height="match_parent"><ImageViewandroid:layout_width="wrap_content"android:layout_height="wrap_content"android:src="@drawable/image1" /><TextViewandroid:layout_width="wrap_content"android:layout_height="wrap_content"android:text="Overlay Text" /> </FrameLayout>
3. 适配器控件
android.widget
包中还有一些用于显示列表或网格的控件,例如:
(1) ListView
- 用于显示垂直滚动的列表。
- 常用属性:
android:entries
:设置列表项。
- 示例:
import android.widget.ListView;ListView listView = findViewById(R.id.listView); ArrayAdapter<String> adapter = new ArrayAdapter<>(this, android.R.layout.simple_list_item_1, items); listView.setAdapter(adapter);
(2) GridView
- 用于显示网格布局。
- 常用属性:
android:numColumns
:设置列数。
- 示例:
GridView gridView = findViewById(R.id.gridView); ArrayAdapter<String> adapter = new ArrayAdapter<>(this, android.R.layout.simple_list_item_1, items); gridView.setAdapter(adapter);
4. 总结
android.widget
包提供了丰富的 UI 控件,涵盖了从按钮、文本框到列表、网格等各种常用组件。以下是常见的应用场景:
- 按钮和文本:使用
Button
、TextView
、EditText
等控件实现用户交互。 - 列表和网格:使用
ListView
、GridView
显示数据。 - 布局管理:使用
LinearLayout
、RelativeLayout
、FrameLayout
等布局控件组织界面。