การควบคุมที่กําหนดเอง

เมื่อใช้การควบคุมที่กำหนดเอง คุณสามารถเพิ่มองค์ประกอบ UI ของคุณเองที่ด้านบนของมุมมองการนำทาง Navigation SDK จะเปลี่ยนตำแหน่งการควบคุมที่กำหนดเองโดยอัตโนมัติเมื่อเลย์เอาต์ในตัวเปลี่ยนแปลง

คุณกำหนดตัวควบคุมที่กำหนดเองได้ 1 รายการสำหรับแต่ละตำแหน่ง การควบคุมที่กำหนดเองอาจเป็นองค์ประกอบ UI เดียว หรือถ้าการออกแบบของคุณต้องการมากกว่านั้น คุณสามารถใช้ ViewGroup กับองค์ประกอบ UI หลายรายการได้

เมธอด setCustomControl ระบุตำแหน่งตามที่ระบุไว้ใน CustomControlPosition enum ดังนี้

  • SECONDARY_HEADER (ปรากฏในโหมดแนวตั้งเท่านั้น)
  • BOTTOM_START_BELOW
  • BOTTOM_END_BELOW

ในภาพด้านล่าง คุณจะเห็นตัวอย่างของแต่ละตำแหน่งบนตำแหน่งของตัวควบคุม UI ที่แจ้งให้ผู้ขับขี่ทราบตำแหน่งผู้โดยสาร

ตำแหน่งการควบคุมที่กำหนดเอง

เพิ่มตัวควบคุมที่กำหนดเองใต้ส่วนหัวหลัก

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

ตำแหน่งนี้อยู่ด้านล่างส่วนหัวของแผนที่หลัก โดยขอบด้านบนจะอยู่ในแนวเดียวกับขอบด้านล่างของส่วนหัวหลัก ระบบจะซ่อนส่วนหัวรองเริ่มต้นไว้ ตำแหน่งนี้รองรับเฉพาะใน portrait mode ใน landscape mode ส่วนหัวรองไม่พร้อมใช้งานและเลย์เอาต์จะไม่เปลี่ยนแปลง

  1. สร้าง Android View ที่มีองค์ประกอบ UI ที่กำหนดเองหรือ ViewGroup
  2. ขยาย XML ให้สูงเกินจริงหรือสร้างอินสแตนซ์มุมมองที่กำหนดเองเพื่อรับอินสแตนซ์ของมุมมองสำหรับเพิ่มเป็นส่วนหัวรอง
  3. ใช้ NavigationView.setCustomControl หรือ NavigationFragment.setCustomControl กับ CustomControlPosition เป็น SECONDARY_HEADER

    ตัวอย่างด้านล่างสร้างส่วนย่อยและเพิ่มการควบคุมที่กำหนดเองในตำแหน่งส่วนหัวรอง

     mNavFragment.setCustomControl(getLayoutInflater().
       inflate(R.layout.your_custom_control, null),
          CustomControlPosition.SECONDARY_HEADER);
    

นำส่วนหัวรองออก

หากต้องการนำส่วนหัวรองออกและกลับไปใช้เนื้อหาเริ่มต้น ให้ใช้เมธอด setCustomControl

  • ตั้งค่ามุมมองเป็น Null เพื่อนำมุมมองออก

    mNavFragment.setCustomControl(null, CustomControlPosition.SECONDARY_HEADER);
    

เพิ่มการควบคุมที่กำหนดเองที่ด้านบนของมุมมองการนำทาง

แอปของคุณสามารถระบุการควบคุมที่กำหนดเองที่สอดคล้องกับขอบด้านล่างของมุมมอง เมื่อแอปเพิ่มการควบคุมที่กำหนดเอง ปุ่มจัดกึ่งกลางใหม่และโลโก้ Google จะขยับขึ้นเพื่อรองรับการควบคุมที่กำหนดเอง

  1. สร้างมุมมอง Android ที่มีองค์ประกอบ UI หรือกลุ่มมุมมองที่ต้องการเพิ่ม
  2. สร้างส่วนย่อยหรือมุมมองการนำทาง
  3. เรียกเมธอด setCustomControl ในมุมมองหรือส่วนย่อยของการนำทาง และระบุการควบคุมและตำแหน่งที่จะใช้

ตัวอย่างต่อไปนี้แสดง View ที่กําหนดเองซึ่งเพิ่มลงใน NavigationFragment

  private NavigationFragment mNavFragment;
    mNavFragment = (NavigationFragment)
      getFragmentManager().findFragmentById(R.id.navigation_fragment);

    // Create the custom control view.
    MyCustomView myCustomView = new MyCustomView();

    // Add the custom control to the bottom end corner of the layout.
    mNavFragment.setCustomControl(myCustomView, CustomControlPosition.
       BOTTOM_END_BELOW);

นำตัวควบคุมที่กำหนดเองออก

เมื่อต้องการนำการควบคุมที่กำหนดเองออก ให้ใช้เมธอด setCustomControl และระบุตำแหน่งของการควบคุมที่ต้องการนำออก

  • ตั้งค่ามุมมองเป็น null สำหรับตำแหน่งนั้น

    mNavFragment.setCustomControl(null, CustomControlPosition.BOTTOM_END_BELOW);