Como colocar guias iônicas na parte inferior da tela?


97

Criei uma aba iônica simples que mostra meus ícones no topo da tela. Tentei envolvê-lo em uma barra de rodapé iônica para colocá-lo na parte inferior da tela, sem sucesso. As guias desaparecem quando eu faço isso. Como devo conseguir os looks que desejo?

<ion-footer-bar>
    <ion-tabs class="tabs-icon-only tabs-stable">
    ...
    </ion-tabs>
</ion-footer-bar>

Respostas:


175

Desde a versão beta 14 do Ionic ( http://blog.ionic.io/the-final-beta/ ), existem algumas variáveis ​​de configuração que agora assumem os valores da plataforma, o que significa que tentarão se comportar de acordo com a plataforma em que são construídos. No caso de guias, para iOS, o padrão é exibir na parte inferior e Android na parte superior.

Você pode facilmente definir o local para todas as plataformas, definindo a tabs.positionfunção no $ionicConfigProvider, dentro de sua função de configuração, desta forma:

MyApp.config(['$ionicConfigProvider', function($ionicConfigProvider) {

    $ionicConfigProvider.tabs.position('bottom'); // other values: top

}]);

Você pode verificar a documentação aqui


1
não, não funciona. Nas guias do navegador na parte inferior, no Android - na parte superior
Toolkit

3
As guias do @Toolkit Android devem ser renderizadas na parte superior por padrão, de acordo com a documentação do Ionic. As diretrizes do Android são para evitar o uso de barras inferiores devido às ações padrão do sistema operacional localizadas na parte inferior: developer.android.com/design/patterns/pure-android.html
Daniel Rochetti

@Toolkit Já editei a resposta para corrigir as informações dos padrões da plataforma. Se você quiser customizá-lo, o código acima é o caminho certo. No entanto, eu sugiro que você evite alterar os padrões da plataforma, eles tendem a seguir as diretrizes da plataforma. =)
Daniel Rochetti

Existe uma maneira, usando este método ou outro, de ter as guias inferior e superior? Tentei criar outro estado para o meu rodapé, mas, por algum motivo, ele não está sendo renderizado na tela, embora eu o veja na guia de rede do meu navegador. Alguma opinião sobre isso? Obrigado
Bill Pope

65

Para colocar as guias ionicFramework na parte inferior da tela para dispositivos Android, basta abrir o arquivo app.js e, em angular.module, adicionar as seguintes linhas de código:

.config(function($ionicConfigProvider) {
    $ionicConfigProvider.tabs.position('bottom');
})

Espero que isso ajude.


Como obter guias na parte superior e inferior da tela?
Syed Danish Ali

Acho que você poderia criar um modelo separado para as guias na parte inferior e superior
Ahmed Na.

Ai sim. Entendi. Eu sou um novato neste mundo iônico.
Syed Danish Ali

Isso deve ser marcado como resposta. É simples e direto ao ponto, você tem meu voto
favorável

Ao definir a guia do Android para baixo, ele está funcionando bem de acordo com o seu código, mas enquanto pressiona o teclado, a guia também aparece com a guia. Existe alguma opção para defini-lo estável na parte inferior enquanto pressiona o teclado.
Suthan M

9

Atualização para Ionic 2 (sintaxe mais limpa / aprimorada):

Em app.js:

@App({
  ...
  config: {
    tabbarPlacement: 'bottom',
  }
})

Veja configs


7

Colocá-lo em seu app.js faz o trabalho.

.config(function($ionicConfigProvider) {
    $ionicConfigProvider.tabs.position('bottom');
})

O Ionic leva automaticamente as configurações da plataforma em consideração para ajustar coisas como o estilo de transição a ser usado e se os ícones de guia devem ser exibidos na parte superior ou inferior.

Por exemplo, no caso de guias, para iOS, o padrão é exibir na parte inferior e Android na parte superior.

Nota 1 : deve-se observar que quando uma plataforma não é iOS ou Android, o padrão é iOS

Nota 2 : se você estiver desenvolvendo em um navegador de desktop, ele assumirá as configurações padrão do iOS


5

Ao lado do arquivo app.js, você precisará injetar o $ ionicConfigProvider no módulo .config e adicionar $ ionicConfigProvider.tabs.position ('bottom')

.config(function($stateProvider, $urlRouterProvider,$ionicConfigProvider) {

 $ionicConfigProvider.tabs.position('bottom'); //top

  // Ionic uses AngularUI Router which uses the concept of states
  // Learn more here: https://github.com/angular-ui/ui-router
  // Set up the various states which the app can be in.
  // Each state's controller can be found in controllers.js
  $stateProvider

  // setup an abstract state for the tabs directive
    .state('tab', {
    url: '/tab',
    abstract: true,
    templateUrl: 'templates/tabs.html'
  })
.
.
.
  // if none of the above states are matched, use this as the fallback
  $urlRouterProvider.otherwise('/tab/dash');

});

3

Como colocar guias iônicas na parte inferior da tela no Ionic 2

Para a versão atual do ionic 2.0.0-beta.10.

Em app.ts:

ionicBootstrap(MyApp, [], {
  tabbarPlacement: "bottom"
});

Veja a configuração

Para o lançamento iônico 2.0.0-beta.11 em breve

Em app.ts:

ionicBootstrap(MyApp, [], {
  tabsPlacement: "bottom" 
});

Config


2

Atualização para Ionic 2 e Ionic 3+:

Você tem 2 métodos para alterar a posição da barra de guias:

Método 1: Use tabsPlacementpropriedade de<ion-tabs>

<ion-tabs  tabsPlacement='bottom' >
    <ion-tab [root]="rootTab" tabTitle="Home"></ion-tab> 
</ion-tabs>

Método 2: alterar a configuração em app.module.ts

@NgModule({
  imports: [
    IonicModule.forRoot(MyApp, {
      tabsPlacement : 'bottom'
    })
  ]
})

Veja a documentação


Existe algo remotamente semelhante para o componente Segment? Posso colocá-lo na parte inferior com CSS, não se preocupe, mas colocar a borda dos botões na parte superior tem tantos loops para pular e parece um tanto estranho, então me pergunto se haveria uma solução mais fácil, mas não encontrei nos documentos. Na verdade, o documento do segmento é bastante curto ... ionicframework.com/docs/api/components/segment/Segment
yogibimbi

Resposta para mim mesmo: ion-segment-button.segment-button { border-top-style: solid; border-bottom-width: 0; }resolve, no entanto, para o border-top-width não encontrei nenhum outro recurso a não ser defini-lo explicitamente no atributo style do elemento para 2px. Outra coisa sempre o substitui com 3px, mesmo definindo-o no Chrome no elemento e com! Important na folha de estilo não parece superar isso.
yogibimbi

1
myapp.config(['$ionicConfigProvider', function($ionicConfigProvider) {
    $ionicConfigProvider.tabs.position('bottom'); // other values: top
}]);

Por favor, evite respostas apenas de código e explique sua solução.
Micho
Ao utilizar nosso site, você reconhece que leu e compreendeu nossa Política de Cookies e nossa Política de Privacidade.
Licensed under cc by-sa 3.0 with attribution required.