Có ai biết cách dễ dàng triển khai thanh tác vụ bằng hai nút kéo dài không?Thanh tác vụ Android với hai nút kéo dài
Dưới đây là một ví dụ về ứng dụng lịch của Google:
Cảm ơn bạn!
Có ai biết cách dễ dàng triển khai thanh tác vụ bằng hai nút kéo dài không?Thanh tác vụ Android với hai nút kéo dài
Dưới đây là một ví dụ về ứng dụng lịch của Google:
Cảm ơn bạn!
Nếu bạn chứ không phải có điều này trong ActionBar vì lý do gì, một cách để đạt được điều này là bằng cách sử dụng một giao diện tùy chỉnh trên Action quán ba. Trong bố cục của Chế độ xem tùy chỉnh, hãy lo lắng về việc thiết lập chiều rộng nút.
Telling hoạt động để sử dụng một giao diện tùy chỉnh cho thanh tác vụ: sau đó
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
final ActionBar ab = getActionBar();
ab.setDisplayShowHomeEnabled(false);
ab.setDisplayShowTitleEnabled(false);
final LayoutInflater inflater = (LayoutInflater)getSystemService("layout_inflater");
View view = inflater.inflate(R.layout.action_bar_edit_mode,null);
ab.setCustomView(view);
ab.setDisplayShowCustomEnabled(true);
}
bố trí/action_bar_edit_mode.xml có thể giống như thế:
<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="wrap_content"
android:layout_height="match_parent"
android:gravity="fill_horizontal"
android:orientation="horizontal" >
<LinearLayout
android:layout_alignParentLeft="true"
android:layout_width="fill_parent"
android:layout_height="match_parent"
android:orientation="horizontal">
<Button
android:id="@+id/action_bar_button_cancel"
android:layout_width="fill_parent"
android:layout_height="match_parent"
android:layout_weight="1"
android:text="Cancel" />
<Button
android:id="@+id/action_bar_button_ok"
android:layout_width="fill_parent"
android:layout_height="match_parent"
android:layout_weight="1"
android:text="Ok" />
</LinearLayout>
</RelativeLayout>
Hy vọng nó sẽ giúp người!
Lưu ý: Tôi nhận ra bố cục làm tổ xấu ở đây và bình thường tôi sẽ không đề xuất điều này nhưng vì lý do nào đó bố cục của thanh tác vụ không cho phép LinearLayout tự chiếm toàn bộ chiều rộng. Thông thường bạn nên tránh bố trí làm tổ không cần thiết như thế này! Có lẽ nếu ai đó thấy điều này, họ có thể chỉ cho chúng tôi một giải pháp tốt hơn?
gì nó trông giống như:
EDIT: Có một excellent post bởi Roman Nurik nơi ông giải thích một cách để làm điều này rất độc đáo.
CHỈNH SỬA 2: Nếu có ai đó tò mò, cách chính xác để bố trí các nút để chúng mở rộng chiều rộng của thanh hành động mà không cần lồng bố trí như tôi đã làm ở trên, là đặt chế độ xem tùy chỉnh các thông số bố cục thích hợp cho phép thành phần của nó khớp với nhóm chính.
Về cơ bản:
actionBar.setCustomView(view,new ActionBar.LayoutParams(
ViewGroup.LayoutParams.MATCH_PARENT,
ViewGroup.LayoutParams.MATCH_PARENT));
Sử dụng chế độ xem tùy chỉnh trong kiểu này (với bố cục tương đối kéo dài) có tác dụng phụ khó chịu của việc ẩn menu mục bổ sung cho một số thiết bị . – Nariman
Không thực sự là một tác dụng phụ khó chịu, đó thực sự là hiệu ứng mong muốn trong trường hợp này. Nếu bạn muốn tràn để vẫn hiển thị, bạn có thể muốn làm theo những gì các ứng dụng liên lạc nào (hoặc "DoneButtonActivity trên dự án Roma Nurik) và sắp xếp các nút bên trái là để cho phép tràn vẫn hiển thị. Tùy chọn bạn có thể thiết lập hoạt động của bạn với thanh tác vụ chia tách để tràn hiển thị ở dưới cùng. –
Tạo LinearLayout ngang bằng hai nút. Sau đó, đặt từng chiều rộng của chúng thành match_parent
và android:layout_weight="0.5"
(Mỗi nút sẽ chiếm 50% không gian).
EDIT:
Để áp dụng như ActionBar
nền:
(ActionBarSherlock) getSupportActionBar().setCustomView(R.layout.my_view);
(ActionBar) getActionBar().setCustomView(R.layout.my_view);
Cách áp dụng LinearLayout này cho ActionBar? –
Đề xuất của tôi sẽ không sử dụng ActionBar; nó liên quan đến việc tạo thủ công 'ActionBar' của riêng bạn bằng cách sử dụng LinearLayout với 2 nút và layout_weight – Guardanis
Có vẻ như không có giải pháp nào tốt hơn. –
Tôi biết 2 cách để làm điều này, nhưng người ta không ở lại trên đầu trang.
Đây là 1:
Bạn cần phải ghi đè lên các phương pháp onCreateOptionsMenu, nhưng điều này là thêm vào ActionBar, bạn cần API 11 để làm điều này và khi bạn xoay màn hình nút này xuất hiện trên ActionBar, điều này phụ thuộc vào kích thước màn hình.
@Override
public void onCreateOptionsMenu(Menu menu, MenuInflater inflater)
{
MenuItem add = menu.add(Menu.NONE, ADD_TIME, 0, R.string.add_time);
add.setShowAsAction(MenuItem.SHOW_AS_ACTION_IF_ROOM);
MenuItem qkAdd = menu.add(Menu.NONE, QUICK_ADD_TIME, 1, R.string.quick_add_time);
qkAdd.setShowAsAction(MenuItem.SHOW_AS_ACTION_IF_ROOM);
}
và đây là kết quả:
nếu bạn đang sử dụng một Fragment bạn cần phải thiết lập setHasOptionsMenu để đúng, nếu không menu sẽ không hiển thị.
Đây là lần thứ 2:
cancel_done.xml
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:background="@color/color_bar"
android:orientation="horizontal" >
<LinearLayout
android:layout_width="0dp"
android:layout_height="match_parent"
android:layout_weight="1"
android:dividerPadding="12dp"
android:orientation="vertical"
android:showDividers="end" >
<Button
android:id="@+id/button1"
style="@drawable/btn_cab_done_holo_light"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:layout_gravity="center"
android:background="@drawable/btn_cab_done_holo_light"
android:text="CANCEL"
android:textSize="14sp" />
</LinearLayout>
<LinearLayout
android:layout_width="0dp"
android:layout_height="match_parent"
android:layout_weight="1"
android:dividerPadding="12dp"
android:orientation="vertical"
android:showDividers="beginning" >
<Button
android:id="@+id/button2"
style="@drawable/btn_cab_done_holo_light"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:layout_gravity="center"
android:background="@drawable/btn_cab_done_holo_light"
android:text="DONE"
android:textSize="14sp" />
</LinearLayout>
</LinearLayout>
phong cách tài nguyên btn_cab_done_holo_light.xml bạn có thể tìm thấy trên .. \ sdk \ nền tảng \ android - %% \ data \ res \ drawable và sau đó vào bố trí của bạn, bạn chỉ cần thêm:
<include
android:layout_width="match_parent"
android:layout_height="48dp"
android:layout_gravity="fill"
layout="@layout/cancel_done" />
và đây là kết quả:
Hiện tại tôi không phải là cách tốt nhất, nhưng nó hoạt động.
Bạn có thể sử dụng actionMode của ActionBar để thực hiện hành động Xong và Hủy.
Xem http://developer.android.com/guide/topics/ui/menus.html#CAB
Được gọi là thanh thực hiện trong Android. hãy xem nó sẽ hữu ích https://github.com/googlesamples/android-DoneBar
Đây không phải là thanh tác vụ ... trông giống như tiện ích thả xuống của một số loại. –
Tôi khá chắc chắn nó là. –
bản sao có thể có của [Hủy nút Xong trong ứng dụng Lịch - Đây có phải là một phần của Thanh tác vụ không?] (Http://stackoverflow.com/questions/15103895/cancel-done-buttons-in-calendar-app-is-it-part -of-action-bar) –