想要在按钮(imageview)onClick上实现像Toast / Error popup这样的whatsapp

时间:2015-06-02 13:42:57

标签: android

就像我们可以在setError()EditText上拨打TextView一样,我希望通过ButtonImageView来实现同样的模仿WhatsApp的记录按钮点击!它弹出:"保持记录,发布以发送"

我认为它与EditText setError()弹出窗口相同。或者还有其他办法吗?

这是我试过的: 1.将背景设置为EditTextTextView但不干净。 2.定制吐司通知,然后设置重力。但不是100%的结果。 3.使用android:enabled =" false"放置编辑文本,android:inputType =" none" 但我无法实现精确重叠..

1 个答案:

答案 0 :(得分:1)

我从评论中找到了一个对我有用的解决方案..

所以我在我的imageview后面放了一个编辑文本,就像这个

            <RelativeLayout 
                    android:layout_width="wrap_content"
                    android:layout_height="wrap_content"
                    android:gravity="center" >
            <ImageView
                android:id="@+id/helpIcon"
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:layout_weight="1"
                android:src="@drawable/help" />

            <EditText
                android:id="@+id/helpMsg"
                android:layout_width="0dp"
                android:layout_height="wrap_content"
                android:enabled="false"
                android:hint=""
                android:inputType="none" />
            </RelativeLayout>

然后在imageview的onClick事件

helpIcon.setOnClickListener(new OnClickListener() {

//use this variable only if you want to remove the toast before it automatically disappears
    private boolean isToastVisible = false;

        @Override
        public void onClick(View arg0) {
            if (!isToastVisible) {
                helpMessage.requestFocus();
                  helpMessage.setError(getResources().getString(R.string.helpText));
                isToastVisible = true;
                new CountDownTimer(5000, 1000) {

                        @Override
                        public void onTick(long millisUntilFinished) {
                        }

                        @Override
                        public void onFinish() {
                            helpMessage.setError(null);
                            isToastVisible = false;

                        }
                    }.start();
            } 
            else {
                helpMessage.setError(null);
                isToastVisible = false;
            }
        }
    });