จะวางแท็บไอออนิกที่ด้านล่างของหน้าจอได้อย่างไร?


97

ฉันสร้างแท็บไอออนิกแบบธรรมดาที่แสดงไอคอนของฉันที่ด้านบนของหน้าจอ ฉันพยายามห่อไว้ในอิออน - ส่วนท้าย - บาร์เพื่อให้วางไว้ที่ด้านล่างของหน้าจอโดยไม่ประสบความสำเร็จ แท็บหายไปเมื่อฉันทำเช่นนั้น ฉันจะทำอย่างไรให้ได้รูปลักษณ์ที่ต้องการ?

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

คำตอบ:


175

ตั้งแต่เบต้า 14ของ Ionic ( http://blog.ionic.io/the-final-beta/ ) มีตัวแปร config บางตัวที่ตอนนี้เป็นค่าเริ่มต้นของค่าแพลตฟอร์มซึ่งหมายความว่าพวกเขาจะพยายามทำงานตามแพลตฟอร์ม ที่พวกเขาสร้างขึ้น ในกรณีของแท็บสำหรับ iOS ค่าเริ่มต้นคือแสดงที่ด้านล่างและ Android อยู่ด้านบน

คุณสามารถ "กำหนดตำแหน่ง" สำหรับทุกแพลตฟอร์มได้อย่างง่ายดายโดยตั้งค่าtabs.positionฟังก์ชันใน$ionicConfigProviderฟังก์ชัน config ของคุณดังนี้:

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

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

}]);

คุณสามารถตรวจสอบเอกสารได้ที่นี่


1
ไม่มันใช้ไม่ได้ บนแท็บเบราว์เซอร์จะอยู่ที่ด้านล่างบน Android - ด้านบน
Toolkit

3
แท็บ @Toolkit Android ควรจะแสดงผลที่ด้านบนตามค่าเริ่มต้นตามเอกสาร Ionic แนวทางปฏิบัติของ Android คือหลีกเลี่ยงการใช้แถบด้านล่างเนื่องจากการดำเนินการเริ่มต้นของระบบปฏิบัติการอยู่ที่ด้านล่าง: developer.android.com/design/patterns/pure-android.html
Daniel Rochetti

@Toolkit ฉันได้แก้ไขคำตอบเพื่อแก้ไขข้อมูลค่าเริ่มต้นของแพลตฟอร์มแล้ว หากคุณต้องการปรับแต่งโค้ดด้านบนเป็นวิธีที่ถูกต้อง อย่างไรก็ตามฉันขอแนะนำให้คุณหลีกเลี่ยงการเปลี่ยนค่าเริ่มต้นของแพลตฟอร์มซึ่งมักจะปฏิบัติตามหลักเกณฑ์ของแพลตฟอร์ม =)
Daniel Rochetti

มีวิธีใช้วิธีนี้หรือวิธีอื่นเพื่อให้มีแท็บด้านล่างและด้านบนหรือไม่? ฉันพยายามสร้างสถานะอื่นสำหรับส่วนท้ายของฉัน แต่ด้วยเหตุผลบางประการมันไม่แสดงบนหน้าจอแม้ว่าฉันจะเห็นในแท็บเครือข่ายในเบราว์เซอร์ของฉันก็ตาม มีความคิดเห็นเกี่ยวกับเรื่องนี้ไหม ขอบคุณ
Bill Pope

65

ในการวางแท็บ ionicFramework ที่ด้านล่างของหน้าจอสำหรับอุปกรณ์ Android เพียงแค่เปิดไฟล์app.jsของคุณและภายใต้angular.module ให้เพิ่มโค้ดบรรทัดต่อไปนี้:

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

หวังว่านี่จะช่วยได้


วิธีการเข้าถึงแท็บทั้งด้านบนและด้านล่างของหน้าจอ
Syed Danish Ali

ฉันคิดว่าคุณสามารถสร้างเทมเพลตแยกกันสำหรับแท็บที่ด้านล่างและด้านบน
Ahmed Na

โอ้ใช่. ฉันเข้าใจแล้ว ฉันเป็นมือใหม่ในโลกของไอออนิกนี้
Syed Danish Ali

สิ่งนี้ควรถูกทำเครื่องหมายว่าเป็นคำตอบ มันง่ายและตรงประเด็นคุณได้คะแนนโหวตของฉัน ...
Mbithy Mbithy

ในขณะที่ตั้งค่าแท็บ Android ไว้ที่ด้านล่างมันทำงานได้ดีตามรหัสของคุณ แต่ในขณะที่กดแป้นพิมพ์แท็บก็จะปรากฏขึ้นพร้อมกับแท็บ มีตัวเลือกใดบ้างในการตั้งค่าให้เสถียรที่ด้านล่างขณะกดแป้นพิมพ์
Suthan M


7

การวางไว้ใน app.js ของคุณได้ผล

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

Ionic จะคำนึงถึงการกำหนดค่าแพลตฟอร์มโดยอัตโนมัติเพื่อปรับเปลี่ยนสิ่งต่างๆเช่นลักษณะการเปลี่ยนแปลงที่จะใช้และไอคอนแท็บควรแสดงที่ด้านบนหรือด้านล่าง

ตัวอย่างเช่นในกรณีของแท็บสำหรับ iOS ค่าเริ่มต้นคือแสดงที่ด้านล่างและ Android อยู่ด้านบน

หมายเหตุ 1 :ควรสังเกตว่าเมื่อแพลตฟอร์มไม่ใช่ iOS หรือ Android ระบบจะตั้งค่าเริ่มต้นเป็น iOS

Note2 : หากคุณกำลังพัฒนาบนเบราว์เซอร์บนเดสก์ท็อปมันจะใช้การกำหนดค่าเริ่มต้นของ iOS


5

ข้างไฟล์ app.js คุณจะต้องฉีด $ ionicConfigProvider ลงในโมดูล. config และเพิ่ม$ 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

วิธีวางแท็บไอออนิกที่ด้านล่างของหน้าจอใน Ionic 2

สำหรับเวอร์ชันปัจจุบัน ionic 2.0.0-beta 10.

ใน app.ts:

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

ดูConfig

สำหรับเร็ว ๆ นี้ที่จะเปิดตัว ionic 2.0.0-beta11

ใน app.ts:

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

Config


2

อัปเดตสำหรับ Ionic 2 และ Ionic 3+:

คุณมี 2 วิธีในการเปลี่ยนตำแหน่งแถบแท็บ:

วิธีที่ 1: ใช้ที่เหมาะสมtabsPlacementของ<ion-tabs>

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

วิธีที่ 2: เปลี่ยนการกำหนดค่าใน app.module.ts

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

ดูเอกสาร


มีอะไรที่คล้ายกันจากระยะไกลสำหรับส่วนประกอบกลุ่มหรือไม่ ฉันสามารถวางไว้ที่ด้านล่างด้วย CSS ได้อย่างไม่ต้องกังวล แต่การวางเส้นขอบที่ปุ่มด้านบนจากนั้นจึงมีลูปมากมายให้ข้ามผ่านและรู้สึกว่าค่อนข้างแฮ็คดังนั้นฉันจึงสงสัยว่ามีวิธีแก้ปัญหาที่ง่ายกว่าหรือไม่ แต่ก็ไม่เจอเลย ในเอกสาร จริงๆแล้ว Segment doc ค่อนข้างสั้น .... ionicframework.com/docs/api/components/segment/Segment
yogibimbi

ตอบตัวเอง: ion-segment-button.segment-button { border-top-style: solid; border-bottom-width: 0; }ทำเคล็ดลับอย่างไรก็ตามสำหรับ border-top-width ฉันไม่พบการขอความช่วยเหลืออื่นใดนอกจากการตั้งค่าอย่างชัดเจนใน style-attribute บนองค์ประกอบเป็น 2px อย่างอื่นจะเขียนทับด้วย 3px เสมอแม้กระทั่งการตั้งค่าใน Chrome บนองค์ประกอบและด้วย! สิ่งสำคัญในสไตล์ชีตดูเหมือนจะไม่เหนือกว่านั้น
yogibimbi

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

โปรดหลีกเลี่ยงรหัสเฉพาะคำตอบและอธิบายวิธีแก้ปัญหาของคุณ
โช
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.