Làm cách nào để đặt các tab ion ở cuối màn hình?


97

Tôi đã tạo một tab ion đơn giản hiển thị các biểu tượng của tôi ở đầu màn hình. Tôi đã cố gắng bọc nó trong một thanh ionic-footer-bar để đặt nó ở cuối màn hình nhưng không thành công. Các tab biến mất khi tôi làm điều đó. Tôi nên làm thế nào để đạt được vẻ ngoài mong muốn?

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

Câu trả lời:


175

Kể từ phiên bản beta 14 của Ionic ( http://blog.ionic.io/the-final-beta/ ), có một số biến cấu hình hiện mặc định thành giá trị nền tảng của chúng, có nghĩa là chúng sẽ cố gắng hoạt động theo nền tảng mà chúng được xây dựng trên. Trong trường hợp tab, đối với iOS, mặc định là hiển thị ở dưới cùng và Android ở trên.

Bạn có thể dễ dàng "thiết lập cứng" vị trí cho tất cả các nền tảng bằng cách đặt tabs.positionchức năng trong $ionicConfigProvider, bên trong chức năng cấu hình của bạn như sau:

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

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

}]);

Bạn có thể kiểm tra tài liệu tại đây


1
không nó không hoạt động. Trên các tab trình duyệt ở dưới cùng, trên Android - ở trên cùng
Bộ công cụ

3
Các tab @Toolkit Android được cho là hiển thị trên cùng theo mặc định theo tài liệu Ionic. Nguyên tắc của Android là tránh sử dụng các thanh dưới cùng vì các tác vụ mặc định của hệ điều hành nằm ở dưới cùng: developer.android.com/design/patterns/pure-android.html
Daniel Rochetti

@Toolkit Tôi đã chỉnh sửa câu trả lời để sửa thông tin mặc định của nền tảng. Nếu bạn muốn tùy chỉnh nó, đoạn mã trên là cách phù hợp để sử dụng. Tuy nhiên, tôi khuyên bạn nên tránh thay đổi các mặc định của nền tảng, chúng có xu hướng tuân theo các nguyên tắc của nền tảng. =)
Daniel Rochetti

Có cách nào, bằng cách sử dụng phương pháp này hay cách khác, để có các tab dưới cùng và trên cùng không? Tôi đã thử tạo một trạng thái khác cho chân trang của mình nhưng vì một số lý do, nó không hiển thị trên màn hình mặc dù tôi thấy nó trong tab mạng trong trình duyệt của mình. Bất kỳ suy nghĩ về điều này? Cảm ơn
Bill Pope,

65

Để đặt các tab ionicFramework ở cuối màn hình cho thiết bị Android, chỉ cần mở tệp app.js của bạn và bên dưới angle.module, hãy thêm các dòng mã sau:

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

Hy vọng điều này sẽ giúp ích.


Làm thế nào để đạt được các tab ở cả trên cùng và dưới cùng của màn hình?
Syed Danish Ali,

Tôi nghĩ bạn có thể tạo mẫu riêng cho các tab ở dưới cùng và trên cùng
Ahmed Na.

Ồ vâng. Tôi hiểu rồi. Tôi là một người mới trong thế giới của ion này.
Syed Danish Ali,

Điều này nên được đánh dấu là câu trả lời. Nó đơn giản và thẳng vào vấn đề, bạn có tôi lên bỏ phiếu ...
Mbithy Mbithy

Trong khi đặt tab android xuống dưới cùng, nó hoạt động tốt theo mã của bạn, Nhưng khi nhấn bàn phím, tab cũng hiển thị cùng với tab. Có tùy chọn nào để đặt nó ổn định ở phía dưới trong khi nhấn bàn phím không.
Suthan M

9

Cập nhật cho Ionic 2 (cú pháp sạch hơn / cải tiến):

Trong app.js:

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

Xem cấu hình


7

Đặt nó vào app.js của bạn sẽ hoạt động.

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

Ionic tự động xem xét các cấu hình nền tảng để điều chỉnh những thứ như kiểu chuyển tiếp sẽ sử dụng và biểu tượng tab sẽ hiển thị ở trên cùng hay dưới cùng.

Ví dụ: Trong trường hợp tab, đối với iOS, mặc định là hiển thị ở dưới cùng và Android ở trên.

Lưu ý1 : Cần lưu ý rằng khi một nền tảng không phải là iOS hoặc Android, thì nó sẽ mặc định là iOS

Lưu ý 2 : nếu bạn đang phát triển trên trình duyệt máy tính để bàn, nó sẽ sử dụng các cấu hình mặc định của iOS


5

Bên cạnh tệp app.js, bạn sẽ cần phải đưa $ ionicConfigProvider vào mô-đun .config và thêm $ 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

Cách đặt các tab ion ở cuối màn hình trong Ionic 2

Đối với phiên bản hiện tại ionic 2.0.0-beta.10.

Trong app.ts:

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

Xem cấu hình

Sắp được phát hành ionic 2.0.0-beta.11

Trong app.ts:

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

Cấu hình


2

Cập nhật cho Ionic 2 và Ionic 3+:

Bạn có 2 phương pháp để thay đổi vị trí thanh tab:

Phương pháp 1: Sử dụng thích tabsPlacementhợp của<ion-tabs>

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

Phương pháp 2: Thay đổi cấu hình trong app.module.ts

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

Xem tài liệu


Có điều gì tương tự từ xa cho thành phần Phân đoạn không? Tôi có thể đặt nó ở dưới cùng với CSS không phải lo lắng, nhưng đặt đường viền trên các nút ở trên cùng thì có quá nhiều vòng lặp để nhảy qua và cảm thấy khá khó hiểu, vì vậy tôi tự hỏi liệu có giải pháp nào dễ dàng hơn không, nhưng không gặp phải. trong tài liệu. Trên thực tế, tài liệu Phân đoạn khá ngắn .... ionicframework.com/docs/api/components/segment/Segment
yogibimbi

Trả lời cho bản thân: ion-segment-button.segment-button { border-top-style: solid; border-bottom-width: 0; }thực hiện mẹo, tuy nhiên, đối với đường viền-top-width, tôi không tìm thấy bất kỳ yêu cầu nào khác ngoài việc đặt nó một cách rõ ràng trong thuộc tính style trên phần tử thành 2px. Một cái gì đó khác luôn ghi đè nó bằng 3px, ngay cả việc đặt nó trong Chrome trên phần tử và với! Important trong biểu định kiểu dường như không nằm trên cùng.
yogibimbi

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

Vui lòng tránh các câu trả lời chỉ có mã và giải thích giải pháp của bạn.
Micho
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.