ผมเคยเห็นการขยายความสูงบาร์ของแอปใน Google ออกแบบApp Barแนวทาง ฉันจะใช้สิ่งเหล่านี้ใน Android Lollipop ได้อย่างไร
ผมเคยเห็นการขยายความสูงบาร์ของแอปใน Google ออกแบบApp Barแนวทาง ฉันจะใช้สิ่งเหล่านี้ใน Android Lollipop ได้อย่างไร
คำตอบ:
คุณต้องใช้วิดเจ็ตToolbarใหม่เพื่อให้บรรลุสิ่งนี้ Toolbar มีการจัดการพิเศษสำหรับความสูงต่ำสุดเพื่อประกาศจำนวนพื้นที่ที่ใช้สำหรับปุ่ม (และการทำงาน)
ในตัวอย่างด้านล่างเรากำลังตั้งค่าความสูงเป็น 128dp (ซึ่งก็คือ 56dp + 72dp ตามที่กำหนดไว้ในข้อมูลจำเพาะ) แต่ยังคงandroid:minHeight
เป็นมาตรฐานactionBarSize
(ซึ่งโดยปกติคือ 56dp) ซึ่งหมายความว่าปุ่มและการทำงานถูก จำกัด ให้อยู่ในตำแหน่งแนวตั้งใน 56dp ด้านบน จากนั้นเราสามารถใช้android:gravity
เพื่อวางตำแหน่งหัวเรื่องที่ด้านล่าง
<Toolbar
android:id="@+id/toolbar"
android:layout_height="128dp"
android:layout_width="match_parent"
android:minHeight="?android:attr/actionBarSize"
android:background="?android:attr/colorPrimary"
android:gravity="bottom" />
หากคุณใช้ AppCompat ให้เปลี่ยนการประกาศเพื่อใช้android.support.v7.widget.Toolbar
แทนและใช้แอตทริบิวต์
@dimen/action_bar_size_x2
และใช้ 112dp บนโทรศัพท์ 128dp บนแท็บเล็ต
android:paddingBottom
แนะนำการเว้นวรรคแปลกเมื่อมีการตั้งค่าbuttonGravity
แอตทริบิวต์ดูเหมือนว่าตัวเลือกที่ดีที่นี่ไม่? bottom
titleMarginBottom
ขอบคุณสำหรับคำถามคำตอบและยิ่งไปกว่านั้นสำหรับการใช้งานแถบเครื่องมือในเนทีฟและ supportlibrary :)
และเราสามารถเล่นได้มากขึ้น ในรันไทม์เราสามารถเล่นกับความสูงและความสูงน้อยที่สุด
ความสูงคือความสูงของ ToolBar มันง่ายทุกตัวเข้าใจและแรงโน้มถ่วงก็ทำหน้าที่ตามความสูงนั้น
ความสูงน้อยที่สุดนั้นยุ่งยากกว่าและไม่ควรต่ำสุด 56dp minHeight นี้ใช้เพื่อวางบรรทัดของ menuItem ของคุณ บรรทัดนี้อยู่กึ่งกลางของ minHeight
ดังนั้นคุณสามารถเพิ่มรหัสนี้ในกิจกรรมของคุณเพื่อดูความแตกต่างด้วยตัวเอง :)
Runnable toolBarAnimator=new Runnable() {
@Override
public void run() {
if(postICS){
// toolbar.setTranslationX(iteration);
// toolbar.setElevation(iteration);
toolbar.setMinimumHeight(iteration * 5);
toolbar.getLayoutParams().height++;
}
uiThreadHanlder.postDelayed(this,16);
iteration++;
if(iteration>150)iteration=0;
}
};
Handler uiThreadHanlder=new Handler();
int iteration=0;
@Override
protected void onResume() {
super.onResume();
//launch the animation
uiThreadHanlder.postDelayed(toolBarAnimator, 1000);
}
@Override
protected void onPause() {
super.onPause();
//stop the animation
uiThreadHanlder.removeCallbacks(toolBarAnimator);
}
แถบเครื่องมืออยู่ที่ไหน:
แถบเครื่องมือ = (Toolbar) findViewById (R.id.toolbar);
เมื่อทำสิ่งนี้คุณจะได้รับ:
แต่ถ้าคุณปล่อยให้แอนิเมชันดำเนินต่อไปคุณจะได้รับ:
ด้วยเหตุนี้การตั้งค่าแถบเครื่องมือ android: layout_height เป็น wrap_content จึงเป็นตัวเลือกที่ดีในกรณีส่วนใหญ่เนื่องจาก Toolbar จะปรับความสูงตามเนื้อหา (และคุณสามารถเปลี่ยนเนื้อหาได้เมื่อรันไทม์ :)
และนี่คือวิธีที่คุณเปลี่ยนขนาดแถบเครื่องมือขณะรันไทม์
ขอบคุณ Chris Banes สำหรับผลงานที่น่าทึ่งที่คุณทำบนแถบการทำงาน
boolean postICS = Build.VERSION.SDK_INT >= Build.VERSION_CODES.JELLY_BEAN;
layout_height
เป็นวิธีที่จะไปฉันคาดว่าวิธีแก้ปัญหาที่อธิบายโดยมรสุมที่นี่ไม่ใช่วิธีแก้ปัญหา แต่เป็นวิธีที่เหมาะสมที่จะไป? code.google.com/p/android/issues/detail?id=77874