Sencha Touch 在导航栏中水平居中搜索字段

Posted

技术标签:

【中文标题】Sencha Touch 在导航栏中水平居中搜索字段【英文标题】:Sencha Touch Horizontally Center Search Field in Navigation Bar 【发布时间】:2012-04-13 22:53:13 【问题描述】:

这个问题非常愚蠢,我可能偶然发现了一个错误,但我需要在 Sencha Touch 的导航栏中将我的搜索字段居中,但我无法让它工作。这是我的代码:

Ext.define('Myapp.view.MyNav', 
extend: 'Ext.navigation.View',

xtype: 'mynav',

requires: [
    'Ext.field.Search', 'Ext.Button'
],

config: 
    fullscreen: true,
        navigationBar: 
            items: [
                
                    xtype: 'searchfield',
                    placeHolder: 'Search...',
                    listeners: 
                        keyup: function(field) 

                        
                    ,
                    align: 'right'
                
            ]
        ,

    items: [ 
        
            title: 'MyNav',
            xtype: 'list',
            fullscreen: true,
            grouped: true,


            store: 
                fields: ['name', 'html'],
                sorters: 'name',
                data: [
                    name: 'Alfa', html: '<p>alfa</p>',
                    name: 'Beta', html: '<p>beta</p>',
                    name: 'Gamma', html: '<p>gamma</p>',
                    name: 'Mupp', html: '<p>mupp</p>',
                    name: 'Tupp', html: '<p>tupp</p>'
                ],
                grouper: 
                groupFn: function(record) 
                    return record.get('name')[0];
                ,
                indexBar: true
            ,
            ,

            listeners: 
                select: function(view, record) 
                    var test = Ext.create('Ext.Panel',                         fullscreen: true,
                        title: record.get('name'),
                        layout: 
                            type:'vbox'
                        ,
                        items: [
                            
                                xtype: 'panel',
                                html: record.get('html')
                            
                        ]
                    );

                    var mainnav = Ext.ComponentQuery.query('bookmarksmainnav')[0];
                    mainnav.setActiveItem(test);
                
            ,

            itemTpl: 'name'
        
    ]


);

专注于实际的导航栏,其他的只是代码粘贴(我对其进行了一些修改),但我很确定这是一个错误。

提前致谢!

【问题讨论】:

【参考方案1】:

您可以尝试使用停靠在页面底部的工具栏,搜索字段居中,我不知道为什么,但导航栏会忽略 centered 属性。

类似这样的:

config: 
    fullscreen: true,
    navigationBar: 

    ,

    items: [ 
        
            xtype: 'toolbar',
            docked: 'bottom',
            items: [
                
                    xtype: 'searchfield',
                    placeHolder: 'Search...',
                    listeners: 
                        keyup: function(field) 

                        
                    ,
                    centered: true
                
            ],
        ,
        
            title: 'MyNav',
            xtype: 'list',

如果您需要屏幕顶部的搜索字段,您可以尝试使用hidden: true 隐藏导航栏并更改工具栏中的docked 属性。

希望对你有帮助!

【讨论】:

我决定更改我的整个 UI,但感谢您的回答,它现在正在使用此实现。【参考方案2】:

一个更好的答案(对我来说)只是将您添加到导航栏中的任何内容居中,是:

this.getNavigationBar().leftBox.setCentered(true);

不过,您可能希望管理每个页面的导航栏的居中性。

【讨论】:

【参考方案3】:

我用过

layout: 
    align: 'center',
    pack: 'center',
    type: 'hbox'

这将在停靠的下方:'bottom',行是上面的示例。

问候

杰克

【讨论】:

【参考方案4】:

每当我发现很难将所需字段居中时,我只需在之前和之后添加一个间隔,并结合我想要居中的项目的 flex,它永远不会失败。在这种情况下:

      items: [
            
                xtype: 'spacer',
            ,
            
                xtype: 'searchfield',
                placeHolder: 'Search...',
                listeners: 
                    keyup: function(field) 

                    
               flex: 0.7

             ,
            
                xtype: 'spacer',
            ,

【讨论】:

以上是关于Sencha Touch 在导航栏中水平居中搜索字段的主要内容,如果未能解决你的问题,请参考以下文章

Sencha Touch 2 厨房水槽像导航

Sencha Touch 2 在轮播下方添加导航栏

Sencha Touch - 在面板中水平放置而不是垂直放置的标签

推送视图导航 Sencha Touch

导航视图上的 Sencha Touch 2 动态按钮

在GridPane JAVAFX中水平居中一行