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>
Ítalo maia
fonte

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

Jrl53
fonte
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.

Ahmed Na.
fonte
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

Greg Blass
fonte
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

Raj Kumar
fonte
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');

});
Sandip Moradiya
fonte
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

MasterProgrammer200
fonte
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

Duannx
fonte
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
}]);
Nasouh Almrstani
fonte
Por favor, evite respostas apenas de código e explique sua solução.
Micho