有没有办法从EditText中的`drawableRight`图标获取视图?

时间:2017-06-09 20:08:40

标签: java android android-edittext

我需要在EditText

中触摸toolTip弹出窗口中的可绘制图标

我的EditText带有可绘制图标

enter image description here

我需要用户点击问号工具提示弹出窗口应该打开,就像这样

enter image description here

但是目前的实施我并没有直截了当的做法。我在右侧放置了隐形视图并跟踪了可绘制图标的点击,当点击图标时,我在隐形视图上设置了工具提示弹出窗口...所以这不是我想的那样。

但我不知道如何将这个可绘制的问号图标作为视图?

我做错了什么?

免费提问

谢谢

3 个答案:

答案 0 :(得分:0)

试试这个:

 <RelativeLayout
    android:layout_width="match_parent"
    android:layout_height="wrap_content">

    <EditText
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        />

    <ImageView
        android:id="@+id/questionMark"
        android:layout_width="24dp"
        android:layout_height="24dp"
        android:layout_alignParentRight="true"
        android:layout_centerVertical="true"
        />

</RelativeLayout>

然后你可以在ImageView上拥有一个onClickListener。

希望这有帮助。

答案 1 :(得分:0)

  

因为TextInputLayoutEditText一起使用,所以你必须使用https://github.com/ViHtarb/Tooltip库获取工具提示,再做一件事就是在右边添加你的问号(?)drawable编辑文本并在下面的代码中应用该抽象的onClick:

editText.setOnTouchListener(new OnTouchListener() {
        @Override
        public boolean onTouch(View v, MotionEvent event) {
            final int DRAWABLE_LEFT = 0;
            final int DRAWABLE_TOP = 1;
            final int DRAWABLE_RIGHT = 2;
            final int DRAWABLE_BOTTOM = 3;

            if(event.getAction() == MotionEvent.ACTION_UP) {
                if(event.getRawX() >= (editText.getRight() - editText.getCompoundDrawables()[DRAWABLE_RIGHT].getBounds().width())) {
                    // Run your tool-tip action from here 
                   Tooltip tooltip = new Tooltip.Builder(v)
    .setText("Hello tooltip")
    .show();

                 return true;
                }
            }
            return false;
        }
    });

答案 2 :(得分:0)

我做了一些欺骗。这很丑,但对我有用。你可以使用一个按钮(作为占位符),高度和0dp。库使用anchorview仅查找弹出窗口的位置。 看我下面怎么做。

这是xml

 setInterval(function() {

          var l = chart.series[0].points.length;
          var p = chart.series[0].points[l - 1];
          var ix = p.x + interval;
          var vv = jugalsLib.nextValue(p.y);

          var w = ix + 30000,
            z = jugalsLib.nextValue(p.y);

          var v;
          a = 0;
          if (a == 1) {
            v = {
              y: vv,
              x: ix,
            };
          } else {
            v = {
              y: vv,
              x: ix,
            };

          }

          series.addPoint(v, true, true);
          series3.data[0].setState('hover');
          series3.data[0].update(v);
          series3.data[0].setState();
          series2.addPoint([w, z], true, true);

          document.getElementById("coor_y").value = jugalsLib.nextValue(p.y).toFixed(4);

          yAxis.removePlotLine('avgLine');

          yAxis.addPlotLine({
            value: vv,
            /*label: {
              text: vv.toFixed(2),
              verticalAlign: 'middle',
              align: 'right',
              rotation: 0,
            },*/
            color: 'red',
            width: 4,
            dashStyle: 'Dash',
            id: 'avgLine'
          });
          xAxis.removePlotLine('ahLine');

          xAxis.addPlotLine({
            value: ix + 6000,
            /*label: {
              text: Highcharts.dateFormat('%I:%M:%S %p', ix+6000) ,
              verticalAlign: 'middle',
              align: 'right',
              rotation: 0,
            },*/
            color: 'red',
            width: 2,
            dashStyle: 'Dash',
            id: 'ahLine'
          });


        }, interval);

这是应用程序如何点击可绘制按钮。

        <RelativeLayout
            android:layout_width="match_parent"
            android:layout_height="wrap_content">

            <android.support.design.widget.TextInputLayout
                android:layout_width="match_parent"
                android:layout_height="wrap_content"
                app:errorEnabled="true"
                app:hintTextAppearance="@style/TextInput">

                <android.support.design.widget.TextInputEditText
                    android:id="@+id/et_pn"
                    android:layout_width="match_parent"
                    android:layout_height="wrap_content"
                    android:hint="@string/username_pn"
                    android:inputType="number"
                    android:maxLength="18"
                    android:drawableEnd="@drawable/ic_close"
                    app:theme="@style/EditText"/>

            </android.support.design.widget.TextInputLayout>

            <Button
                android:id="@+id/placeholder"
                android:layout_width="0dp"
                android:layout_height="0dp"
                android:layout_alignParentEnd="true"
                android:layout_marginEnd="15dp"
                android:layout_centerVertical="true"/>

        </RelativeLayout>