簡體   English   中英

在Titanium android tableview上切換搜索欄

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM