Tôi đã thấy thanh ứng dụng có chiều cao mở rộng trong nguyên tắc Thanh ứng dụng thiết kế của Google . Làm cách nào để triển khai những điều này trong Android Lollipop?
Tôi đã thấy thanh ứng dụng có chiều cao mở rộng trong nguyên tắc Thanh ứng dụng thiết kế của Google . Làm cách nào để triển khai những điều này trong Android Lollipop?
Câu trả lời:
Bạn cần sử dụng tiện ích Thanh công cụ mới để đạt được điều này. Thanh công cụ có cách xử lý đặc biệt đối với chiều cao tối thiểu của nó để khai báo lượng không gian được sử dụng cho các nút (và hành động).
Trong ví dụ dưới đây, chúng tôi đang đặt chiều cao là 128dp (là 56dp + 72dp như được xác định trong thông số kỹ thuật), nhưng giữ nguyên android:minHeight
làm tiêu chuẩn actionBarSize
(thường là 56dp). Điều này có nghĩa là các nút và hành động bị hạn chế đặt theo chiều dọc ở 56dp trên cùng. Sau đó chúng ta có thể sử dụng android:gravity
để định vị tiêu đề ở dưới cùng.
<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" />
Nếu bạn đang sử dụng AppCompat, hãy thay đổi khai báo để sử dụng android.support.v7.widget.Toolbar
thay thế và sử dụng các thuộc tính của nó.
@dimen/action_bar_size_x2
, và sử dụng 112dp trên điện thoại, 128dp trên máy tính bảng
android:paddingBottom
giới thiệu khoảng cách lạ khi buttonGravity
được đặt thành bottom
. Các titleMarginBottom
thuộc tính có vẻ như lựa chọn tốt hơn ở đây, đúng không?
Cảm ơn câu hỏi của bạn, câu trả lời của nó và hơn thế nữa cho việc triển khai thanh công cụ trong thư viện gốc và thư viện hỗ trợ :)
Và chúng tôi có thể chơi nhiều hơn. Chúng tôi có thể, trong thời gian chạy, chơi với Chiều cao và Chiều cao tối thiểu.
Chiều cao là chiều cao ToolBar, nó đơn giản, mọi cơ thể đều hiểu, và trọng lực tác động theo chiều cao đó.
Chiều cao tối thiểu phức tạp hơn và không nên ở mức tối thiểu 56dp. MinHeight này được sử dụng để đặt dòng menuItem của bạn. Dòng này nằm ở điểm giữa của minHeight của bạn.
Vì vậy, bạn có thể thêm mã này vào hoạt động của mình để tự mình thấy sự khác biệt. :)
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);
}
Thanh công cụ ở đâu:
toolbar = (Thanh công cụ) findViewById (R.id.toolbar);
Khi làm điều này, bạn nhận được:
nhưng nếu bạn vẫn tiếp tục hoạt ảnh, bạn sẽ có:
Đây là lý do tại sao, đặt thanh công cụ của bạn android: layout_height thành wrap_content là một lựa chọn tốt trong hầu hết các trường hợp, vì Thanh công cụ sẽ điều chỉnh chiều cao của nó theo nội dung của nó (và bạn có thể thay đổi nội dung trong thời gian chạy :)
Và đây cũng là cách bạn thay đổi kích thước thanh công cụ của mình trong thời gian chạy.
Cảm ơn Chris Banes vì công việc tuyệt vời mà bạn đã làm trên thanh hành động.
boolean postICS = Build.VERSION.SDK_INT >= Build.VERSION_CODES.JELLY_BEAN;
layout_height
là cách để đi, tôi mong đợi cách giải quyết được mô tả bởi gió mùa ở đây cũng không phải là một cách giải quyết, mà là cách thích hợp để đi? code.google.com/p/android/issues/detail?id=77874