设为首页 加入收藏

TOP

Android基础知识:Activity中获取视图组件对象
2018-03-18 16:21:22 】 浏览:182
Tags: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();
    }
});


】【打印繁体】【投稿】【收藏】 【推荐】【举报】【评论】 【关闭】 【返回顶部
上一篇排查Java的内存问题 下一篇作用域和闭包的通俗理解

最新文章

热门文章

Hot 文章

Python

C 语言

C++基础

大数据基础

linux编程基础

C/C++面试题目