Come posizionare le linguette ioniche nella parte inferiore dello schermo?


97

Ho creato una semplice scheda ionica che mostra le mie icone nella parte superiore dello schermo. Ho provato a racchiuderlo in una barra ionica per posizionarlo nella parte inferiore dello schermo senza successo. Le schede scompaiono quando lo faccio. Come devo realizzare l'aspetto che desidero?

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

Risposte:


175

Dalla beta 14 di Ionic ( http://blog.ionic.io/the-final-beta/ ), ci sono alcune variabili di configurazione che ora vengono impostate come predefinite sui valori della piattaforma, il che significa che cercheranno di comportarsi in base alla piattaforma su cui sono costruiti. Nel caso delle schede, per iOS l'impostazione predefinita è quella di visualizzare in basso e Android in alto.

Puoi facilmente "impostare hard" la posizione per tutte le piattaforme impostando la tabs.positionfunzione nella funzione di $ionicConfigProviderconfigurazione in questo modo:

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

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

}]);

Puoi controllare la documentazione qui


1
no non funziona. Sul browser le schede sono in basso, su Android - in alto
Toolkit

3
Le schede di @Toolkit Android dovrebbero essere visualizzate in primo piano per impostazione predefinita secondo i documenti di Ionic. Le linee guida di Android sono per evitare di utilizzare le barre inferiori a causa delle azioni predefinite del sistema operativo situate in basso: developer.android.com/design/patterns/pure-android.html
Daniel Rochetti

@Toolkit Ho già modificato la risposta per correggere le informazioni sui valori predefiniti della piattaforma. Se vuoi personalizzarlo, il codice sopra è il modo giusto per farlo. Tuttavia, ti suggerirei di evitare di modificare le impostazioni predefinite della piattaforma, che tendono a seguire le linee guida della piattaforma. =)
Daniel Rochetti

C'è un modo, usando questo metodo o un altro, per avere le schede in alto e in basso? Ho provato a creare un altro stato per il mio piè di pagina ma, per qualche motivo, non viene visualizzato sullo schermo anche se lo vedo nella scheda di rete nel mio browser. Qualche idea su questo? Grazie
Bill Pope,

65

Per posizionare le schede ionicFramework nella parte inferiore dello schermo per i dispositivi Android, apri il tuo file app.js e sotto angular.module aggiungi le seguenti righe di codice:

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

Spero che questo ti aiuti.


Come ottenere le schede sia nella parte superiore che inferiore dello schermo?
Syed Danish Ali

Penso che potresti creare un modello separato per le schede in basso e in alto
Ahmed Na.

Oh si. Capisco. Sono un principiante nel mondo di questo ionico.
Syed Danish Ali

Questo dovrebbe essere contrassegnato come risposta. È semplice e diretto al punto, hai ottenuto il mio voto
positivo

Mentre si imposta la scheda Android in basso, funziona bene come da codice, ma mentre si preme la tastiera anche la scheda viene visualizzata con la scheda. C'è qualche opzione per impostarlo stabile in basso mentre si preme la tastiera.
Suthan M


7

Inserendolo nel tuo app.js fa il lavoro.

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

Ionic prende automaticamente in considerazione le configurazioni della piattaforma per regolare cose come lo stile di transizione da utilizzare e se le icone delle schede devono essere visualizzate in alto o in basso.

Ad esempio, nel caso delle schede, per iOS l'impostazione predefinita è la visualizzazione in basso e Android in alto.

Nota 1 : va notato che quando una piattaforma non è iOS o Android, verrà impostata su iOS per impostazione predefinita

Nota 2 : se stai sviluppando su un browser desktop, verranno utilizzate le configurazioni predefinite di iOS


5

A lato del file app.js dovrai iniettare $ ionicConfigProvider nel modulo .config e aggiungere $ 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

Come posizionare le linguette ioniche nella parte inferiore dello schermo in Ionic 2

Per la versione corrente ionic 2.0.0-beta.10.

In app.ts:

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

Vedi Config

Per il prossimo rilascio ionico 2.0.0-beta.11

In app.ts:

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

Config


2

Aggiornamento per Ionic 2 e Ionic 3+:

Hai 2 metodi per cambiare la posizione della barra delle schede:

Metodo 1: utilizzare la tabsPlacementproprietà di<ion-tabs>

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

Metodo 2: modifica della configurazione in app.module.ts

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

Vedi i documenti


C'è qualcosa di remotamente simile per il componente Segmento? Posso metterlo in fondo con CSS senza preoccupazioni, ma mettere il bordo sui pulsanti in alto ha così tanti loop da attraversare e sembra piuttosto hacky, quindi mi chiedo se ci fosse una soluzione più semplice, ma non ne ho trovati nei documenti. In realtà, il documento Segment è piuttosto breve .... ionicframework.com/docs/api/components/segment/Segment
yogibimbi

Risposta a self: ion-segment-button.segment-button { border-top-style: solid; border-bottom-width: 0; }fa il trucco, tuttavia, per la larghezza del bordo superiore non ho trovato altro ricorso se non impostarlo esplicitamente nell'attributo style sull'elemento a 2px. Qualcos'altro lo sovrascrive sempre con 3px, anche impostandolo in Chrome sull'elemento e con! Important nel foglio di stile non sembra superarlo.
yogibimbi

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

Per favore, evita risposte solo codice e spiega la tua soluzione.
Micho
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.