目录
按钮控件button由TextView派生而来,它们的区别:
图像视图展示的图片通常位于res/drawable目录,设置方式有两种:
与TextView相比,Button增加两个新属性:
例:
- <TextView
- android:layout_width="match_parent"
- android:layout_height="wrap_content"
- android:text="TextView"/>
-
- <Button
- android:layout_width="match_parent"
- android:layout_height="wrap_content"
- android:text="Button"
- android:textColor="@color/black"
- android:textSize="17sp"/>

监听器:专门监听控件的动作行为,只有控件发生了指定的动作,监听器才会触发开关去执行对应的代码逻辑。
例:
XML
- <Button
- android:id="@+id/btn_click_single"
- android:layout_width="match_parent"
- android:layout_height="wrap_content"
- android:text="点击事件"
- android:textColor="#000000"
- android:textSize="15sp"/>
-
- <TextView
- android:id="@+id/tv_result"
- android:layout_width="match_parent"
- android:layout_height="wrap_content"
- android:padding="5dp"
- android:gravity="center"
- android:textColor="#000000"
- android:textSize="15sp"
- android:text="查看点击结果"/>
java
- public class ButtonClickActivity extends AppCompatActivity {
- private TextView tv_result;
- @Override
- protected void onCreate(Bundle savedInstanceState) {
- super.onCreate(savedInstanceState);
- setContentView(R.layout.activity_button_click);
-
- tv_result = findViewById(R.id.tv_result);//保存id为tv_result的视图
- Button btn_click_single = findViewById(R.id.btn_click_single);
- btn_click_single.setOnClickListener(new MyOnClickListener(tv_result));//监听器
- }
- static class MyOnClickListener implements View.OnClickListener{
- private final TextView tv_result;
- public MyOnClickListener(TextView tv_result){//构造函数
- this.tv_result = tv_result;
- }
- public void onClick(View v){
- String desc = String.format("您点击了按钮");
- tv_result.setText(desc);
- }
- }
- }
点击事件按钮


例:
xml文件同上;
java
- public class ButtonClickActivity extends AppCompatActivity {
- @Override
- protected void onCreate(Bundle savedInstanceState) {
- super.onCreate(savedInstanceState);
- setContentView(R.layout.activity_button_click);
-
- TextView tv_result = findViewById(R.id.tv_result);
- Button btn_click_single = findViewById(R.id.btn_click_single);
- btn_click_single.setOnLongClickListener(v -> {//v -> 内部匿名类的替换形式
- String desc = String.format("您长按点击了按钮");
- tv_result.setText(desc);
- return true;//返回true则表示消耗掉长按,不再往上级视图传递,为false则长按会涉及到上级视图
- });
- }
- }
是否允许点击由enabled属性控制,属性值为true时表示允许点击,false则不允许。
例:
xml
- <LinearLayout
- android:layout_width="match_parent"
- android:layout_height="wrap_content"
- android:orientation="horizontal">
-
- <Button
- android:id="@+id/btn_enable"
- android:layout_width="0dp"
- android:layout_weight="1"
- android:layout_height="wrap_content"
- android:text="启用按钮"
- android:textColor="#000000"
- android:textSize="17sp"/>
- <Button
- android:id="@+id/btn_disable"
- android:layout_width="0dp"
- android:layout_weight="1"
- android:layout_height="wrap_content"
- android:text="禁用按钮"
- android:textColor="#000000"
- android:textSize="17sp"/>
- </LinearLayout>
- <Button
- android:id="@+id/btn_test"
- android:layout_width="match_parent"
- android:layout_height="wrap_content"
- android:text="按钮"
- android:textColor="#000000"
- android:textSize="17sp"
- android:enabled="false"/>
- <TextView
- android:id="@+id/tv_result"
- android:layout_width="match_parent"
- android:layout_height="wrap_content"
- android:text="你点击了按钮"
- android:textColor="#000000"
- android:textSize="17sp"/>
java
-
- public class ButtonEnableActivity extends AppCompatActivity implements View.OnClickListener {
- private TextView tv_result;
- private Button btn_test;
-
- @Override
- protected void onCreate(Bundle savedInstanceState) {
- super.onCreate(savedInstanceState);
- setContentView(R.layout.activity_button_enable);
-
- Button btn_enable = findViewById(R.id.btn_enable);
- Button btn_disable = findViewById(R.id.btn_disable);
- btn_test = findViewById(R.id.btn_test);
- tv_result = findViewById(R.id.tv_result);
-
- btn_enable.setOnClickListener(this);
- btn_disable.setOnClickListener(this);
- btn_test.setOnClickListener(this);
-
- }
- public void onClick(View v){
- switch (v.getId()){
- case R.id.btn_enable:
- btn_test.setEnabled(true);
- break;
- case R.id.btn_disable:
- btn_test.setEnabled(false);
- break;
- case R.id.btn_test:
- String desc = String.format("点击了按钮");
- tv_result.setText(desc);
- break;
- }
- }
-
- @Override
- public void onPointerCaptureChanged(boolean hasCapture) {
- super.onPointerCaptureChanged(hasCapture);
- }
- }

例:
xml
- <ImageView
- android:id="@+id/iv_scale"
- android:layout_width="match_parent"
- android:layout_height="220dp"
- android:layout_marginTop="5dp"/>
java
- public class ImageScaleActivity extends AppCompatActivity {
-
- @Override
- protected void onCreate(Bundle savedInstanceState) {
- super.onCreate(savedInstanceState);
- setContentView(R.layout.activity_image_scale);
- ImageView iv_scale = findViewById(R.id.iv_scale);
- iv_scale.setImageResource(R.drawable.mc);
- }
- }

ImageView本身默认图片居中显示,若要改变图片的显示方式,通过scaleType属性设定,属性取值如下:

java类中设置
iv_scale.setScaleType(ImageView.ScaleType.CENTER);
xml
android:scaleType="center"
ImageButton是显示图片的图像按钮,但它继承自ImageView,而非继承Button。
在某些情况,有的字符无法由输入法打出来,或某些字体以特殊字体展示。
例:
- <Button
- android:layout_width="wrap_content"
- android:layout_height="wrap_content"
- android:text="图标在左"
- android:drawableLeft="@drawable/ic_launcher_background"/>
