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.