基础复习——Button——按钮——触发事件——监听器单独和amp;公共——点击事件和长按事件——禁用和amp;恢复按钮...
按钮控件Button由TextView派生而来,它们之间的区别有:
(1)Button拥有默认的按钮背景,而TextView默认无背景;
(2)Button的内部文本默认居中对齐,而TextView的内部文本默认靠左对齐;
(3)Button会默认将英文字母转为大写,而TextView保持原始的英文大小写;
与TextView相比,Button增加了两个新属性:
(1)textAllCaps属性,它指定了是否将英文字母转为大写,为true是表示自动转为大写,为false表示不做大写转换。
(2)onClick属性,它用来接管用户的点击动作,指定了点击按钮时要触发哪个方法;
布局:
-
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
-
android:layout_width="match_parent"
-
android:layout_height="match_parent"
-
android:orientation="vertical"
-
android:padding="5dp">
-
-
<TextView
-
android:layout_width="match_parent"
-
android:layout_height="wrap_content"
-
android:gravity="center"
-
android:text="下面的按钮英文默认大写"
-
android:textColor="@color/black"
-
android:textSize="17sp" />
-
-
<Button
-
android:layout_width="match_parent"
-
android:layout_height="wrap_content"
-
android:text="Hello World"
-
android:textColor="@color/black"
-
android:textSize="17sp" />
-
-
<TextView
-
android:layout_width="match_parent"
-
android:layout_height="wrap_content"
-
android:gravity="center"
-
android:text="下面的按钮英文保持原状"
-
android:textColor="@color/black"
-
android:textSize="17sp" />
-
-
<Button
-
android:layout_width="match_parent"
-
android:layout_height="wrap_content"
-
android:text="Hello World"
-
android:textAllCaps="false"
-
android:textColor="@color/black"
-
android:textSize="17sp" />
-
-
<Button
-
android:id="@ id/btn_click_xml"
-
android:layout_width="match_parent"
-
android:layout_height="wrap_content"
-
android:onClick="doClick"
-
android:text="直接指定点击方法"
-
android:textColor="#000000"
-
android:textSize="17sp" />
-
-
<TextView
-
android:id="@ id/tv_result"
-
android:layout_width="match_parent"
-
android:layout_height="wrap_content"
-
android:text="这里查看按钮的点击结果"
-
android:textColor="#000000"
-
android:textSize="17sp" />
-
-
</LinearLayout>
代码:
-
package com.example.myapplication;
-
-
import androidx.appcompat.app.AppCompatActivity;
-
-
import android.os.Bundle;
-
import android.view.View;
-
import android.widget.Button;
-
import android.widget.TextView;
-
-
public class NextActivity extends AppCompatActivity
-
{
-
-
private TextView tv_result; // 声明一个文本视图实例
-
-
-
protected void onCreate(Bundle savedInstanceState)
-
{
-
super.onCreate(savedInstanceState);
-
setContentView(R.layout.activity_next);
-
-
-
-
-
tv_result = findViewById(R.id.tv_result); // 获取名叫tv_result的文本视图
-
}
-
-
// activity_button_style.xml中给btn_click_xml指定了点击方法doClick
-
public void doClick(View view)
-
{
-
String desc = String.format("%s 您点击了按钮:%s", DateUtil.getNowTime(), ((Button) view).getText());
-
-
tv_result.setText(desc); // 设置文本视图的文本内容
-
}
-
-
}
DateUtil
-
package com.example.myapplication;
-
-
import android.annotation.SuppressLint;
-
-
import java.text.SimpleDateFormat;
-
import java.util.Date;
-
-
-
public class DateUtil
-
{
-
// 获取当前的日期时间
-
public static String getNowDateTime()
-
{
-
SimpleDateFormat sdf = new SimpleDateFormat("yyyyMMddHHmmss");
-
return sdf.format(new Date());
-
}
-
-
// 获取当前的时间
-
public static String getNowTime()
-
{
-
SimpleDateFormat sdf = new SimpleDateFormat("HH:mm:ss");
-
return sdf.format(new Date());
-
}
-
-
}
===================================================================================================================
监听器,意思是专门监听控件的动作行为。只有控件发生了指定的动作,监听器才会触发开关去执行对应的代码逻辑。
按钮控件有两种常用的监听器:
(1)点击监听器,通过setOnClickListener方法设置。按钮被按住少于500毫秒时,会触发点击事件。
(2)长按监听器,通过setOnLongClickListener方法设置。按钮被按住超过500毫秒时,会触发长按事件。
监听器
第一个是匿名内部类,
布局:
-
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
-
android:layout_width="match_parent"
-
android:layout_height="match_parent"
-
android:orientation="vertical">
-
-
<LinearLayout
-
android:layout_width="match_parent"
-
android:layout_height="wrap_content"
-
android:orientation="horizontal">
-
-
<Button
-
android:id="@ id/btn_click_single"
-
android:layout_width="0dp"
-
android:layout_height="wrap_content"
-
android:layout_weight="1"
-
android:text="指定单独的点击监听器"
-
android:textColor="#000000"
-
android:textSize="15sp" />
-
-
<Button
-
android:id="@ id/btn_click_public"
-
android:layout_width="0dp"
-
android:layout_height="wrap_content"
-
android:layout_weight="1"
-
android:text="指定公共的点击监听器"
-
android:textColor="#000000"
-
android:textSize="15sp" />
-
-
</LinearLayout>
-
-
<TextView
-
android:id="@ id/tv_result"
-
android:layout_width="match_parent"
-
android:layout_height="wrap_content"
-
android:paddingLeft="5dp"
-
android:text="这里查看按钮的点击结果"
-
android:textColor="#000000"
-
android:textSize="15sp" />
-
-
</LinearLayout>
代码:
-
package com.example.myapplication;
-
-
import androidx.appcompat.app.AppCompatActivity;
-
-
import android.os.Bundle;
-
import android.view.View;
-
import android.widget.Button;
-
import android.widget.TextView;
-
-
public class NextActivity extends AppCompatActivity implements View.OnClickListener
-
{
-
-
private TextView tv_result; // 声明一个文本视图实例
-
-
-
protected void onCreate(Bundle savedInstanceState)
-
{
-
super.onCreate(savedInstanceState);
-
setContentView(R.layout.activity_next);
-
-
-
tv_result = findViewById(R.id.tv_result); // 获取名叫tv_result的文本视图
-
-
-
-
// 从布局文件中获取名叫btn_click_single的按钮控件
-
Button btn_click_single = findViewById(R.id.btn_click_single);
-
-
// 设置点击监听器,一旦用户点击按钮,就触发监听器的onClick方法
-
btn_click_single.setOnClickListener(new MyOnClickListener());
-
-
-
-
-
-
// 从布局文件中获取名叫btn_click_public的按钮控件
-
Button btn_click_public = findViewById(R.id.btn_click_public);
-
-
// 设置点击监听器,一旦用户点击按钮,就触发监听器的onClick方法
-
btn_click_public.setOnClickListener(this);
-
-
}
-
-
// 定义一个点击监听器,它实现了接口View.OnClickListener
-
class MyOnClickListener implements View.OnClickListener
-
{
-
-
public void onClick(View v) // 点击事件的处理方法
-
{
-
String desc = String.format("%s 您点击了按钮:%s", DateUtil.getNowTime(), ((Button) v).getText());
-
tv_result.setText(desc); // 设置文本视图的文本内容
-
}
-
}
-
-
-
public void onClick(View v) // 点击事件的处理方法
-
{
-
if (v.getId() == R.id.btn_click_public) // 来自于按钮btn_click_public
-
{
-
String desc = String.format("%s 您点击了按钮:%s", DateUtil.getNowTime(), ((Button) v).getText());
-
tv_result.setText(desc); // 设置文本视图的文本内容
-
}
-
}
-
-
}
代码也可以如下:
-
package com.example.myapplication;
-
-
import androidx.appcompat.app.AppCompatActivity;
-
-
import android.os.Bundle;
-
import android.view.View;
-
import android.widget.Button;
-
import android.widget.TextView;
-
-
public class NextActivity extends AppCompatActivity implements View.OnClickListener
-
{
-
-
private TextView tv_result; // 声明一个文本视图实例
-
-
-
protected void onCreate(Bundle savedInstanceState)
-
{
-
super.onCreate(savedInstanceState);
-
setContentView(R.layout.activity_next);
-
-
-
tv_result = findViewById(R.id.tv_result); // 获取名叫tv_result的文本视图
-
-
-
-
// 从布局文件中获取名叫btn_click_single的按钮控件
-
Button btn_click_single = findViewById(R.id.btn_click_single);
-
-
// 设置点击监听器,一旦用户点击按钮,就触发监听器的onClick方法
-
btn_click_single.setOnClickListener(new MyOnClickListener() {
-
-
public void onClick(View v) // 点击事件的处理方法
-
{
-
String desc = String.format("%s 您点击了按钮:%s", DateUtil.getNowTime(), ((Button) v).getText());
-
tv_result.setText(desc); // 设置文本视图的文本内容
-
}
-
});
-
-
-
-
findViewById(R.id.btn_click_public).setOnClickListener(this);
-
-
}
-
-
// 定义一个点击监听器,它实现了接口View.OnClickListener
-
class MyOnClickListener implements View.OnClickListener
-
{
-
-
public void onClick(View v) // 点击事件的处理方法
-
{
-
String desc = String.format("%s 您点击了按钮:%s", DateUtil.getNowTime(), ((Button) v).getText());
-
tv_result.setText(desc); // 设置文本视图的文本内容
-
}
-
}
-
-
-
public void onClick(View v) // 点击事件的处理方法
-
{
-
if (v.getId() == R.id.btn_click_public) // 来自于按钮btn_click_public
-
{
-
String desc = String.format("%s 您点击了按钮:%s", DateUtil.getNowTime(), ((Button) v).getText());
-
tv_result.setText(desc); // 设置文本视图的文本内容
-
}
-
}
-
-
}
==================================================================================================
布局:
-
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
-
android:layout_width="match_parent"
-
android:layout_height="match_parent"
-
android:orientation="vertical">
-
-
<LinearLayout
-
android:layout_width="match_parent"
-
android:layout_height="wrap_content"
-
android:orientation="horizontal">
-
-
<Button
-
android:id="@ id/btn_longclick_single"
-
android:layout_width="0dp"
-
android:layout_height="wrap_content"
-
android:layout_weight="1"
-
android:text="指定单独的长按监听器"
-
android:textColor="#000000"
-
android:textSize="15sp" />
-
-
<Button
-
android:id="@ id/btn_longclick_public"
-
android:layout_width="0dp"
-
android:layout_height="wrap_content"
-
android:layout_weight="1"
-
android:text="指定公共的长按监听器"
-
android:textColor="#000000"
-
android:textSize="15sp" />
-
-
</LinearLayout>
-
-
<TextView
-
android:id="@ id/tv_result"
-
android:layout_width="match_parent"
-
android:layout_height="wrap_content"
-
android:paddingLeft="5dp"
-
android:text="这里查看按钮的长按结果"
-
android:textColor="#000000"
-
android:textSize="15sp" />
-
-
</LinearLayout>
代码:
-
package com.example.myapplication;
-
-
import androidx.appcompat.app.AppCompatActivity;
-
-
import android.os.Bundle;
-
import android.view.View;
-
import android.widget.Button;
-
import android.widget.TextView;
-
-
public class NextActivity extends AppCompatActivity implements View.OnLongClickListener
-
{
-
-
private TextView tv_result; // 声明一个文本视图实例
-
-
@Override
-
protected void onCreate(Bundle savedInstanceState)
-
{
-
super.onCreate(savedInstanceState);
-
setContentView(R.layout.activity_next);
-
-
-
tv_result = findViewById(R.id.tv_result); // 获取名叫tv_result的文本视图
-
-
// 从布局文件中获取名叫btn_click_single的按钮控件
-
Button btn_longclick_single = findViewById(R.id.btn_longclick_single);
-
-
// 设置长按监听器,一旦用户长按按钮,就触发监听器的onLongClick方法
-
btn_longclick_single.setOnLongClickListener(new MyOnLongClickListener());
-
-
-
-
-
-
// 从布局文件中获取名叫btn_click_public的按钮控件
-
Button btn_longclick_public = findViewById(R.id.btn_longclick_public);
-
-
// 设置长按监听器,一旦用户长按按钮,就触发监听器的onLongClick方法
-
btn_longclick_public.setOnLongClickListener(this);
-
}
-
-
@Override
-
public boolean onLongClick(View v) // 长按事件的处理方法
-
{
-
if (v.getId() == R.id.btn_longclick_public) // 来自于按钮btn_longclick_public
-
{
-
String desc = String.format("%s 您长按了按钮:%s", DateUtil.getNowTime(), ((Button) v).getText());
-
tv_result.setText(desc); // 设置文本视图的文本内容
-
}
-
-
return true;
-
}
-
-
// 定义一个长按监听器,它实现了接口View.OnLongClickListener
-
class MyOnLongClickListener implements View.OnLongClickListener
-
{
-
@Override
-
public boolean onLongClick(View v) // 长按事件的处理方法
-
{
-
String desc = String.format("%s 您长按了按钮:%s", DateUtil.getNowTime(), ((Button) v).getText());
-
tv_result.setText(desc); // 设置文本视图的文本内容
-
-
return true;
-
}
-
}
-
}
==================================================================================================
布局:
-
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
-
android:layout_width="match_parent"
-
android:layout_height="match_parent"
-
android:orientation="vertical">
-
-
<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_height="wrap_content"
-
android:layout_weight="1"
-
android:text="启用测试按钮"
-
android:textColor="#000000"
-
android:textSize="17sp" />
-
-
<Button
-
android:id="@ id/btn_disable"
-
android:layout_width="0dp"
-
android:layout_height="wrap_content"
-
android:layout_weight="1"
-
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:enabled="false"
-
android:text="测试按钮"
-
android:textColor="#888888"
-
android:textSize="17sp" />
-
-
<TextView
-
android:id="@ id/tv_result"
-
android:layout_width="match_parent"
-
android:layout_height="wrap_content"
-
android:paddingLeft="5dp"
-
android:text="这里查看测试按钮的点击结果"
-
android:textColor="#000000"
-
android:textSize="17sp" />
-
-
</LinearLayout>
代码:
-
package com.example.myapplication;
-
-
import androidx.appcompat.app.AppCompatActivity;
-
import android.graphics.Color;
-
import android.os.Bundle;
-
import android.view.View;
-
import android.widget.Button;
-
import android.widget.TextView;
-
-
public class NextActivity 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_next);
-
-
-
tv_result = findViewById(R.id.tv_result); // 获取名叫tv_result的文本视图
-
-
// 因为按钮控件的setOnClickListener方法来源于View基类,所以也可对findViewById得到的视图直接设置点击监听器
-
findViewById(R.id.btn_enable).setOnClickListener(this);
-
findViewById(R.id.btn_disable).setOnClickListener(this);
-
-
btn_test = findViewById(R.id.btn_test); // 获取名叫btn_test的按钮控件
-
btn_test.setOnClickListener(this); // 设置btn_test的点击监听器
-
}
-
-
@Override
-
public void onClick(View v)
-
{
-
// 由于多个控件都把点击监听器设置到了当前页面,因此公共的onClick方法内部需要区分来自于哪个按钮
-
if (v.getId() == R.id.btn_enable)
-
{
-
btn_test.setTextColor(Color.BLACK); // 设置按钮的文字颜色
-
btn_test.setEnabled(true); // 启用当前控件
-
}
-
else if (v.getId() == R.id.btn_disable)
-
{
-
btn_test.setTextColor(Color.GRAY); // 设置按钮的文字颜色
-
btn_test.setEnabled(false); // 禁用当前控件
-
}
-
else if (v.getId() == R.id.btn_test)
-
{
-
String desc = String.format("%s 您点击了按钮:%s", DateUtil.getNowTime(), ((Button) v).getText());
-
tv_result.setText(desc); // 设置文本视图的文本内容
-
}
-
}
-
}
这篇好文章是转载于:学新通技术网
- 版权申明: 本站部分内容来自互联网,仅供学习及演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,请提供相关证据及您的身份证明,我们将在收到邮件后48小时内删除。
- 本站站名: 学新通技术网
- 本文地址: /boutique/detail/tanhgkijji
-
photoshop保存的图片太大微信发不了怎么办
PHP中文网 06-15 -
《学习通》视频自动暂停处理方法
HelloWorld317 07-05 -
word里面弄一个表格后上面的标题会跑到下面怎么办
PHP中文网 06-20 -
Android 11 保存文件到外部存储,并分享文件
Luke 10-12 -
photoshop扩展功能面板显示灰色怎么办
PHP中文网 06-14 -
微信公众号没有声音提示怎么办
PHP中文网 03-31 -
excel下划线不显示怎么办
PHP中文网 06-23 -
excel打印预览压线压字怎么办
PHP中文网 06-22 -
TikTok加速器哪个好免费的TK加速器推荐
TK小达人 10-01 -
怎样阻止微信小程序自动打开
PHP中文网 06-13