1
私は新しいツールバーの検索をアプリに追加しました。これはすばらしいです。それについていくつか質問があります。ツールバーの検索のカスタマイズ
検索ツールバーの右側にあるキャンセルアイコン(x)を削除するにはどうすればよいですか?
また、アプリツールバーと検索ツールバーの間の遷移があまりスムーズではないので、検索ツールバーを閉じるか戻るときに、どうすればanimatelayout
などを設定できますか?
私は新しいツールバーの検索をアプリに追加しました。これはすばらしいです。それについていくつか質問があります。ツールバーの検索のカスタマイズ
検索ツールバーの右側にあるキャンセルアイコン(x)を削除するにはどうすればよいですか?
また、アプリツールバーと検索ツールバーの間の遷移があまりスムーズではないので、検索ツールバーを閉じるか戻るときに、どうすればanimatelayout
などを設定できますか?
現在のところ、これらのいずれもカスタマイズすることはできませんが、カスタム検索のサポートを行うのは簡単ではありません。これはToolbarのjavadocで議論されています
Toolbar.setGlobalToolbar(true);
Style s = UIManager.getInstance().getComponentStyle("Title");
Form hi = new Form("Toolbar", new BoxLayout(BoxLayout.Y_AXIS));
TextField searchField = new TextField("", "Toolbar Search"); // <1>
searchField.getHintLabel().setUIID("Title");
searchField.setUIID("Title");
searchField.getAllStyles().setAlignment(Component.LEFT);
hi.getToolbar().setTitleComponent(searchField);
FontImage searchIcon = FontImage.createMaterial(FontImage.MATERIAL_SEARCH, s);
searchField.addDataChangeListener((i1, i2) -> { // <2>
String t = searchField.getText();
if(t.length() < 1) {
for(Component cmp : hi.getContentPane()) {
cmp.setHidden(false);
cmp.setVisible(true);
}
} else {
t = t.toLowerCase();
for(Component cmp : hi.getContentPane()) {
String val = null;
if(cmp instanceof Label) {
val = ((Label)cmp).getText();
} else {
if(cmp instanceof TextArea) {
val = ((TextArea)cmp).getText();
} else {
val = (String)cmp.getPropertyValue("text");
}
}
boolean show = val != null && val.toLowerCase().indexOf(t) > -1;
cmp.setHidden(!show); // <3>
cmp.setVisible(show);
}
}
hi.getContentPane().animateLayout(250);
});
hi.getToolbar().addCommandToRightBar("", searchIcon, (e) -> {
searchField.startEditingAsync(); // <4>
});
hi.add("A Game of Thrones").
add("A Clash Of Kings").
add("A Storm Of Swords").
add("A Feast For Crows").
add("A Dance With Dragons").
add("The Winds of Winter").
add("A Dream of Spring");
hi.show();