如何使用TextInputLayout作为Button

时间:2017-07-17 12:49:19

标签: android

我有一个像AppCompatEditText这样的TextInputLayout

<RelativeLayout
    android:id="@+id/rv_from_date_holder"
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    android:layout_marginEnd="20dp"
    android:layout_marginStart="20dp">

    <android.support.design.widget.TextInputLayout
        android:id="@+id/edt_from_date_holder"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:layout_marginBottom="20dp"
        android:layout_marginTop="20dp"
        android:layout_toStartOf="@+id/iv_from_date_picker"
        android:fontFamily="sans-serif-light"
        android:textColor="@color/colorPrimary"
        android:textColorHint="@color/colorPrimary"
        android:theme="@style/TextLabelDark"
        app:passwordToggleEnabled="true"
        app:passwordToggleTint="@color/colorPrimary">

        <android.support.v7.widget.AppCompatEditText
            android:id="@+id/edt_from_date"
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:hint="From Date"
            android:maxLines="1"
            android:textColor="@color/colorPrimary"
            android:textColorHint="@color/colorPrimary"
            android:textCursorDrawable="@null"
            app:backgroundTint="@color/colorPrimary" />

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

    <ImageView
        android:id="@+id/iv_from_date_picker"
        android:layout_width="48dp"
        android:layout_height="48dp"
        android:layout_alignParentEnd="true"
        android:layout_centerVertical="true"
        android:padding="8dp"
        android:src="@drawable/date_range" />

</RelativeLayout>

ScreehShot

点击AppCompatEditText后,我需要显示日期选择器。但我不希望键盘弹出。

我尝试了以下内容:

1. edt_from_date.setEnabled(false);
2. edt_from_date.setKeyListener(null);
3. rv_from_date_holder.setOnclickListener()//Also didn't worked

如果我禁用我无法弹出日期选择器。 如果我将setKeyListener设置为null,那么我需要点击两次以获取日期选择器。

4 个答案:

答案 0 :(得分:1)

你应该添加

  

机器人:可聚焦=&#34;假&#34;

<android.support.v7.widget.AppCompatEditText
        android:id="@+id/edt_from_date"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:hint="From Date"
        android:maxLines="1"
        android:focusable="false"
        android:textColor="@color/colorPrimary"
        android:textColorHint="@color/colorPrimary"
        android:textCursorDrawable="@null"
        app:backgroundTint="@color/colorPrimary" />

内部活动/片段集

  

onClickListener

答案 1 :(得分:0)

试一下,它一定会帮到你

     // disable keyboard on editext on touch listener
   editText.setOnTouchListener(otl);

private OnTouchListener otl = new OnTouchListener() {
    public boolean onTouch (View v, MotionEvent event) {
            return true; // the listener has consumed the event
    }
 };

//在这里打开日期选择器

editText.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View v) {
            // open your date picker here
        }
    });

答案 2 :(得分:0)

您可以将此编辑文本设置为edt_from_date.setEnabled(false);,而不是您设置启用编辑文本为false,您可以edt_from_date.setEditable(false);禁止编辑文字的编辑,然后您仍然可以setOnClickListener()而不显示键盘

答案 3 :(得分:0)

将以下代码放入xml

<android.support.design.widget.TextInputLayout

                android:layout_width="match_parent"
                android:layout_marginTop="5dp"
                android:layout_height="wrap_content">
                <android.support.v7.widget.AppCompatEditText
                    android:layout_width="match_parent"
                    android:maxLines="1"
                    android:imeOptions="actionDone"
                    android:inputType="text"
                    android:focusable="false"
                    android:fontFamily="sans-serif-condensed"
                    android:hint="Expiry Date"
                    android:layout_height="wrap_content" />
            </android.support.design.widget.TextInputLayout>

android:focusable =“false”是您不希望键盘打开时需要添加的属性。

现在点击它来显示日期选择器使用下面的代码:

your_edit_text.setOnClickListener(new OnClickListener() {

            @Override
            public void onClick(View v) {
                // TODO Auto-generated method stub
                new DatePickerDialog(YourActivity.this, date, myCalendar
                        .get(Calendar.YEAR), myCalendar.get(Calendar.MONTH),
                        myCalendar.get(Calendar.DAY_OF_MONTH)).show();
            }
        });

最后编码以获取日期

myCalendar = Calendar.getInstance();

         date = new DatePickerDialog.OnDateSetListener() {

            @Override
            public void onDateSet(DatePicker view, int year, int monthOfYear,
                                  int dayOfMonth) {
                // TODO Auto-generated method stub
                myCalendar.set(Calendar.YEAR, year);
                myCalendar.set(Calendar.MONTH, monthOfYear);
                myCalendar.set(Calendar.DAY_OF_MONTH, dayOfMonth);
                updateLabel();
            }

        };

希望,这会对你有所帮助。 : - )