[英]toggle searchbar on Titanium android tableview
我有一个带有搜索栏的表格视图
var tv = Titanium.UI.createTableView ({
data: official_list,
filterAttribute: 'title',
backgroundColor : '#fff',
search: search,
searchHidden:false,
top: '50dp'
});
我希望搜索栏最初被隐藏,并且仅在按下searchbutton时显示。 我为此使用以下代码
searchButton.addEventListener('click', function(_e) {
search.visible = !search.visible;
if(search.visible) {
search.focus();
self.softKeyboardOnFocus = 0;
}
else {
Ti.UI.Android.hideSoftKeyboard();
}
});
我遇到的问题是,即使搜索被隐藏,在搜索栏的位置仍会留有空白。
我尝试使tableview的坐标动画化,但是这会覆盖导航栏,并且仍然保留空白。 无论如何,我是否可以切换搜索栏(也可以通过删除空白?)。
请帮忙!
我通过创建2 searchBar并使tableview中的searchBar坐标超出范围来解决了该问题。 附加到表格视图的搜索栏设为1dp。
var search = Titanium.UI.createSearchBar({
barColor:'#000',
showCancel:false,
top: -50,
height:'45dp',
hidden: true,
visible: false,
softKeyboardOnFocus : Titanium.UI.Android.SOFT_KEYBOARD_DEFAULT_ON_FOCUS
});
var search_table = Titanium.UI.createSearchBar({
barColor:'#000',
showCancel:false,
height:'1dp',
hidden: true,
visible: false,
});
现在,我可以为searchBar(搜索)设置动画了。
search.visible = !search.visible;
if(search.visible) {
search.focus();
self.softKeyboardOnFocus = 0;
search.animate({
top: '50dp',
duration : 500,
delay : 0,
curve: Titanium.UI.ANIMATION_CURVE_EASE_IN
});
tv.animate({
top: '90dp',
duration : 500,
delay : 0,
curve: Titanium.UI.ANIMATION_CURVE_EASE_IN
});
}
else {
Ti.UI.Android.hideSoftKeyboard();
tv.animate({
top: '50dp',
duration : 500,
delay : 0,
curve: Titanium.UI.ANIMATION_CURVE_EASE_OUT
});
}
});
并将值从searchBar传递到search_table(更好的方法是为每个搜索编写查询,但是我有7个以上,而是选择将值传递给tableview.search)
search.addEventListener('change', function(e) {
search_table.value = e.value;
});
我认为您的解决方案不起作用,因为tableview是窗口的直接子级。
如果您用另一个视图将表格视图包围起来,然后在该表格视图中对表格视图进行动画处理以隐藏搜索栏,则该方法应该起作用。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.