android 获取对象,Android基础知识:Activity中获取视图组件对象

Activity中获取视图组件对象:

public View findViewById(@IdRes int id)

该方法以组件的资源ID为参数,返回一个视图对象View,需要强转成具体的视图类对象。

Button mTrueButton = (Button) findViewById(R.id.true_button);

设置视图组件的点击监听器:

视图组件对象调用视图对象注册监听器的方法:

public void setOnClickListener(@Nullable OnClickListener l)

该方法的参数是一个监听器,是一个实现了 OnClickListener 接口的对象,OnClickListener 接口中有一个 public void onClick(View v) 方法。

mTrueButton.setOnClickListener(new View.OnClickListener() {

@Override

public void onClick(View v) {

//监听其中需要执行的具体代码

}

});

创建提示消息:

调用Toast类的以下方法:

public static Toast makeText(Context context, CharSequence text, @Duration int duration)

public static Toast makeText(Context context, @StringRes int resId, @Duration int duration)

上面的 makeText 方法,接收三个参数:

Context: 通常是Activity的一个实例(Activity本身就是Context的子类)

第二个参数:既可以是要显示的字符串消息的资源ID,也可以是字符串本身

第三个参数:通常是两个Toast常量(Toast.LENGTH_SHORT、Toast.LENGTH_LONG)中的一个,用来指定toast消息的停留时间

makeText 方法返回Toast对象,然后调用Toast的实例方法 show() ,在屏幕上显示消息

Toast.makeText(QuizActivity.this, "这是要显示的消息", Toast.LENGTH_LONG).show();

上面直接显示消息的方式有一个问题:每次点击按钮,都会弹出一个消息,如果多次连续点击,消息会连续多次弹出。解决如下

监听消息的弹出和退出(设置上一次消息消失前,点击按钮不会有任何反应):

mTrueButton.setOnClickListener(new View.OnClickListener() {

boolean isClicked = false;

@Override

public void onClick(View v) {

//获取Toast对象

Toast toast = Toast.makeText(QuizActivity.this, "你好,你点击了确认按钮。", Toast.LENGTH_SHORT);

//获取显示消息的View对象

View view = toast.getView();

//设置显示消息的View对象的监听器

view.addOnAttachStateChangeListener(new View.OnAttachStateChangeListener() {

//显示消息时触发

@Override

public void onViewAttachedToWindow(View v) {

isClicked = true;

}

//消息消失时触发

@Override

public void onViewDetachedFromWindow(View v) {

isClicked = false;

}

});

if (!isClicked) {

//调用Toast的实例方法 show() 显示消息

toast.show();

}

}

});

设置Toast消息显示的位置:

使用Toast的实例方法

public void setGravity(int gravity, int xOffset, int yOffset)

参数一:Gravity类的常量值(Gravity.TOP、Gravity.BOTTOM、Gravity.CENTER、Gravity.LEFT ...)

参数二:消息在x轴上的偏移量(消息默认是显示在x抽的中间的)

参数三:消息在y轴上的偏移量

mFalseButton.setOnClickListener(new View.OnClickListener(){

@Override

public void onClick(View v) {

Toast toast = Toast.makeText(QuizActivity.this, "你好,你点击了取消按钮。", Toast.LENGTH_LONG);

toast.setGravity(Gravity.TOP, -100, 0);

toast.show();

}

});

0b1331709591d260c1c78e86d0c51c18.png

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值