我有一个带有搜索栏的桌面视图
var tv = Titanium.UI.createTableView ({
data: official_list,
filterAttribute: 'title',
backgroundColor : '#fff',
search: search,
searchHidden:false,
top: '50dp'
});
我希望最初隐藏搜索栏,仅在按下搜索按钮时显示。我正在使用以下代码
searchButton.addEventListener('click', function(_e) {
search.visible = !search.visible;
if(search.visible) {
search.focus();
self.softKeyboardOnFocus = 0;
}
else {
Ti.UI.Android.hideSoftKeyboard();
}
});
我遇到的问题是,即使搜索被隐藏,搜索栏仍然留有空白区域。
我尝试设置了tableview的坐标,但是它会覆盖导航栏并且空白区域仍然存在。无论如何,我可以切换搜索栏(通过删除空格?)。
请帮忙!
答案 0 :(得分:1)
我通过创建2个searchBar并使tableview坐标中的searchBar超出范围来解决了这个问题。附加到tableview的搜索栏是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;
});
答案 1 :(得分:0)
我认为您的解决方案不起作用,因为tableview是窗口的直接子项。
如果将tableview包含在另一个视图中,然后在封闭视图中为tableview设置动画以隐藏搜索栏,则它应该有效。