2017-01-11 3 views
1

Я попытался использовать com.codename1.components.FloatingActionButton в сочетании с com.codename1.ui.TextArea.FloatingActionButton on TextArea не работает должным образом

Теперь у меня есть два вопроса:

  1. Видимо VALIGN не оплачен - это ошибка?
  2. ActionListener FloatingActionButton не вызывается. Что-то не так с моим использованием или это ошибка?

Вот код, чтобы продемонстрировать это:

public class FormFabOnText extends Form { 
    public FormFabOnText() { 
     setTitle("FormFabOnText"); 
     setLayout(new BorderLayout()); 
     Container contentPane = getContentPane(); 
     contentPane.add(BorderLayout.NORTH, new SpanLabel(
       "This form contains a TextArea and a FloatingActionButton combined by bindFabToContainer. " 
       + "It demonstrates that the FloatingActionButton is not working in this constellation.")); 
     TextArea textArea = new TextArea(); 
     float iconDefaultSize = FloatingActionButton.getIconDefaultSize(); 
     try { 
      FloatingActionButton.setIconDefaultSize(2.0f); 
      FloatingActionButton floatingActionButton = FloatingActionButton.createFAB(FontImage.MATERIAL_CLEAR); 
      Container containerFab = floatingActionButton.bindFabToContainer(textArea, Component.RIGHT, Component.CENTER); 
      floatingActionButton.addActionListener((e) -> textArea.setText("")); 
      contentPane.add(BorderLayout.CENTER, containerFab); 
     } finally { 
      FloatingActionButton.setIconDefaultSize(iconDefaultSize); 
     } 
    } 
} 
+0

Он выглядит как метод 'com.codename1.ui.Container.getComponentAt (интермедиат, целое)' необходимо специальное лечение LayeredLayout –

+0

Видимо 'FloatingActionButton.pointerPressed' и' FloatingActionButton.pointerReleased' называется - так что не так? –

+0

«FloatingActionButton» не работает, когда «TextArea» сфокусирован - тогда 'com.codename1.ui.Container.getComponentAt (int, int)' вообще не вызывается –

ответ

0

Текстовая область имеет 0 высота поэтому, когда вы VALIGN в центр кнопки правильно ставит себя на первое место. Затем вы добавляете его в макет границы, который растягивает его, но предпочтительный размер текстовой области определяет valign, поэтому он остается.

Я не уверен, что есть хороший обходной путь для этого, кроме небольшого предела, как это было в msuikit demo.

Проблема с прослушиванием во время редактирования, вероятно, связана с собственным редактируемым одноранговым узлом. Нажатие внутри текстовой области отправляется на исходный слой для редактирования, иначе элементы ниже могут вызвать проблему. Ввод текста - это одноранговый, но также очень частный случай.

+0

Контейнер, построенный на 'bindFabToContainer' является' BorderLayout.CENTER' в contentPane и, следовательно, должен иметь определенную высоту. В обоих случаях мне жаль, что он работает не так, как ожидалось, не так ли? –

Смежные вопросы