Ich hatte GridLayout mit 2 Spalten verwendet. Wenn ich suche (Code ist unten), bleibt die TextArea Komponente in ihrer eigenen Position. Die Verborgenen nehmen auch ihre Plätze ein. Wenn ich BoxLayout anstelle von GridLayout verwende, funktioniert es gut, aber es gibt nur eine Spalte.Gridlayout Textfeldsuche Codenameone
Problem nach der Suche
Container wrapContainerMinute = new Container(new GridLayout(connection.responseMenu.size()/2+1, 2));
f.add(wrapContainerMinute);
for (Map<String, Object> entrySet : connection.responseMenu) {
String tableName = (String) entrySet.get("name");
Container singleMinuteMenuContainer = new Container(new BoxLayout(BoxLayout.Y_AXIS));
TextArea minuteTextArea = new TextArea(tableName);
minuteTextArea.setEditable(false);
minuteTextArea.getAllStyles().setAlignment(Label.CENTER);
minuteTextArea.setScrollVisible(false);
minuteTextArea.setRows(20);
minuteTextArea.setGrowByContent(true);
minuteTextArea.setGrowLimit(2);
singleMinuteMenuContainer.add(minuteTextArea);
}
minuteSearchTextField.addDataChangeListener(new DataChangedListener() {
@Override
public void dataChanged(int type, int index) {
String searchTableName = minuteSearchTextField.getText().toLowerCase();
boolean show = false;
for (Component c : wrapContainerMinute) {
Container searchedContainer = (Container)c;
TextArea searchedTextArea = (TextArea) searchedContainer.getComponentAt(0);
c.setVisible(true);
if (searchedTextArea.getText().toLowerCase().indexOf(searchTableName)>-1) {
show = searchedTextArea.getText().toLowerCase().indexOf(searchTableName)>-1;
c.setHidden(!show);
c.setVisible(show);
}else{
show = searchedTextArea.getText().toLowerCase().indexOf(searchTableName) > -1;
c.setHidden(!show);
c.setVisible(show);
}
}
wrapContainerMinute.animateLayout(1500);
}
});
Oder verwenden Sie 'myGridLayout.setHideZeroSized (true)', die wir hinzugefügt, um genau das gleiche Problem in der Benutzeroberfläche der Einstellungen zu unterstützen. Sollte einen Blog-Post darüber geschrieben haben, aber es wurde unter den Aufgaben begraben ... –
Vielen Dank, SetHideZeroSized funktioniert perfekt. Wenn ich die Komponente wie in der Antwort entferne, liegt ein Problem vor. Wenn der gesuchte Text im Textfeld gelöscht oder bearbeitet wird, muss ich die Komponenten neu hinzufügen, aber die Komponenten sind bereits entfernt. –