Как мне использовать FAB(плавающая кнопка действия), чтобы скрыть или показать мое текстовое поле редактирования?

Я новичок в дизайне материалов, включаю и играю с парой функций. Есть ли пример, который я могу проверить или загрузить какой-либо пример, который показывает мне, как скрыть / показать мое текстовое поле редактирования при нажатии? Это мой код:

<EditText
            android:id="@+id/messageEdit"
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:layout_alignParentBottom="true"
            android:layout_toLeftOf="@+id/chatSendButton"
            android:autoText="true"
            android:hint="type message" />

        <Button
            android:id="@+id/chatSendButton"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_alignParentBottom="true"
            android:layout_alignParentRight="true"
            android:background="@color/background_floating_material_dark"
            android:text="Send MSG"
            android:textColor="@color/background_material_light"/>

То, что я пытаюсь сделать, это поместить это в FAB, поэтому, когда я нажимаю кнопку FAB, это окно редактирования текста (с кнопкой) всплывает, но как только оно появляется, оно остается там до тех пор, пока я снова не нажму кнопку FAB. Любая такая функциональность уже реализована, я могу следовать? Я бы предпочел самый простой и эффективный подход. Есть какие-нибудь подсказки?

1 ответ

Решение

Вы не можете иметь эти представления внутри вашего FAB. Объявите ваш fab в xml следующим образом:

     <android.support.design.widget.FloatingActionButton
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:src="@drawable/ic_edit"
    android:layout_gravity="right|bottom"
    android:id="@+id/edit"
    android:theme="@style/Widget.Design.FloatingActionButton" />

В вашей активности onCreate():

    FloatingActionButton edit = (FloatingActionButton)findViewById(R.id.edit);
    edit.setOnClickListener(new OnClickListener(){
     @Override
        public void onClick(View v) {
            EditText editText = (EditText)findViewById(R.id.messageEdit);
            if(editText.getVisibility() == View.VISIBLE)
            {
                editText.setVisibility(View.INVISIBLE);
            }
            else {
                editText.setVisibility(View.VISIBLE);
            }
        }
       });
Другие вопросы по тегам