Tôi đang cố gắng sử dụng R.layout.simple_list_item_multiple_choice với ListView. CheckedTextView được sử dụng trong simple_list_item_multiple_choice.xml, nhưng làm thế nào tôi có thể làm cho hộp kiểm được căn trái thay vì căn phải?Làm cách nào để làm cho Hộp kiểm trong Android CheckedTextView được căn trái thay vì căn phải?
Trả lời
Tôi không nghĩ bạn có thể. Nhìn vào source code, có vẻ như dấu kiểm được vẽ ở bên phải mọi lúc. Và, thành thật mà nói, tôi sẽ khuyên bạn nên gắn bó với điều đó, để nhất quán - Android luôn bị đánh bại bởi vì các ứng dụng của nó có giao diện người dùng không nhất quán.
Trong cơ hội ra rằng ai đó đang chĩa súng vào đầu bạn, buộc bạn phải thay đổi vị trí của các dấu kiểm, lớp con CheckedTextView
như OMGPleaseDontShootCheckedTextView
, và ghi đè lên các phương pháp như onDraw()
, với các phiên bản tinh chỉnh của bản gốc mà thay đổi vị trí của hình ảnh và văn bản.
Tạo mẫu hàng của riêng bạn và đặt android: drawableLeft trên CheckedTextView.
<CheckedTextView xmlns:android="http://schemas.android.com/apk/res/android"
android:id="@android:id/text1"
android:layout_width="fill_parent"
android:layout_height="40dip"
android:gravity="center_vertical"
android:paddingLeft="5dip"
android:drawableLeft="?android:attr/listChoiceIndicatorMultiple"
/>
hoặc
android:drawableLeft="?android:attr/listChoiceIndicatorSingle"
Điều đó ngăn cản bạn sử dụng chức năng có thể vẽ cùng với chỉ báo dấu kiểm (mặc định cho phép CheckedTextView). Tôi nghĩ câu trả lời của @CommonsWare phù hợp hơn. –
android: drawableLeft = "android:? Attr/listChoiceIndicatorMultiple": P
Bí quyết là ở android: Checkmark làm cho nó vô
<CheckedTextView xmlns:android="http://schemas.android.com/apk/res/android"
android:id="@+id/checked_text_single_choice"
android:layout_width="match_parent"
android:layout_height="52dp"
android:checkMark="@null"
android:gravity="center_vertical"
android:textAppearance="?android:attr/textAppearanceSmall"
android:drawableLeft="?android:attr/listChoiceIndicatorSingle"
android:drawableRight="@null"
android:textColor="@android:color/black"
/>
tôi không thể tin điều này đã hiệu quả. cảm ơn – j2emanue
giải pháp làm việc – vuhung3990
ma thuật này là gì? nó thậm chí không hợp lý, nhưng hoạt động! – Ogbe
hãy thử cái này và hy vọng nó sẽ cung cấp cho bạn một số ý tưởng
<LinearLayout
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="horizontal" >
<LinearLayout
android:layout_width="match_parent"
android:layout_height="match_parent"
android:layout_weight="1"
android:orientation="horizontal" >
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="Connection lost sound alert"
android:layout_weight="10"
android:layout_gravity="center"
/>
</LinearLayout>
<LinearLayout
android:layout_width="match_parent"
android:layout_height="match_parent"
android:layout_weight="2"
android:layout_gravity="right"
android:orientation="horizontal" >
<CheckBox android:id="@+id/checkbox_meat"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_gravity="right"
android:onClick="onCheckboxClicked"/>
</LinearLayout>
</LinearLayout>
Nếu bạn muốn hộp kiểm ở bên trái, chỉ cần sử dụng CheckBox
. Có lẽ nó không phải là vấn đề của khóa học, nhưng một CheckBox
có thể chứa văn bản. Bạn có thể xác định văn bản đó bằng cách thêm thuộc tính XML android:text hoặc bằng cách gọi phương thức setText(). Trên thực tế, CheckBox
được kế thừa từ Button
, được kế thừa từ TextView
, đó là lý do tại sao nó có tất cả các thuộc tính liên quan đến văn bản.
đã thêm ví dụ 'CheckBox' xml với ảnh chụp màn hình trong câu trả lời riêng biệt –
Ví dụ về đề xuất của @ WonderCsabo khi sử dụng Hộp kiểm.
<CheckBox
android:id="@+id/create_account_checkedTextView_password"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="Show"
android:gravity="center"
android:checked="true"
# relative layout params
android:layout_alignParentEnd="true"
android:layout_alignParentRight="true"
android:layout_above="@+id/hint1" />
Có thể có một thủ thuật với Checkable Layout như trong bài viết này - https://chris.banes.me/2013/03/22/checkable-views/ . Chỉ cần sử dụng một số cách bố trí tùy chỉnh như thế này như bố cục mục ListView:
<com.example.custom_view.CheckableLinearLayout
xmlns:android="http://schemas.android.com/apk/res/android"
android:orientation="horizontal"
android:layout_width="match_parent"
android:layout_height="wrap_content">
<CheckedTextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:checkMark="?android:attr/listChoiceIndicatorSingle"
android:duplicateParentState="true"
.../>
<TextView
android:id="@android:id/text1"
android:layout_width="match_parent"
android:layout_height="wrap_content"
.../>
</com.example.custom_view.CheckableLinearLayout>
hoặc
android:checkMark=?android:attr/listChoiceIndicatorMultiple"
Bạn có thể gán drawable của bạn để drawableLeft thuộc tính, nhưng nó sẽ không làm cho bạn bất kỳ tốt vì nó không hỗ trợ pha màu . Thay vào đó tôi mở rộng CheckedTextView như thế:
public class LeftSideCheckedTextView extends CheckedTextView {
public LeftSideCheckedTextView(Context context) {
this(context, null, 0);
}
public LeftSideCheckedTextView(Context context, AttributeSet attrs) {
this(context, attrs, 0);
}
public LeftSideCheckedTextView(Context context, AttributeSet attrs, int defStyleAttr) {
super(context, attrs, defStyleAttr);
Field mCheckMarkGravity = null;
try {
mCheckMarkGravity = this.getClass().getSuperclass().getDeclaredField("mCheckMarkGravity");
mCheckMarkGravity.setAccessible(true);
mCheckMarkGravity.set(this, Gravity.START);
} catch (Exception e) {
Logger.error(e);
}
}
}
Ở đây tôi truy cập vào mCheckMarkGravity lĩnh vực ẩn được sử dụng bên trong CheckedTextView nhưng không có quyền truy cập thông qua các thuộc tính phong cách, theo vé lỗi này: https://code.google.com/p/android/issues/detail?id=174517
- 1. Graphviz - làm cách nào để làm cho văn bản trong nhãn được căn trái?
- 2. làm thế nào để sắp xếp các văn bản trong CheckedTextView với hộp kiểm
- 3. Qt - Căn giữa hộp kiểm trong QTable
- 4. Bố cục Android căn trái và phải căn chỉnh theo bố cục ngang
- 5. android: CheckedTextView không thể kiểm tra được?
- 6. Cách căn chỉnh và căn trái các chuỗi văn bản căn chỉnh trong Bash
- 7. Căn chỉnh bên trái và căn phải trong div trong Bootstrap
- 8. Làm cách nào để căn chỉnh đầu vào bên phải và nhập văn bản số sang trái?
- 9. Làm cách nào để căn chỉnh văn bản căn chỉnh trong canvas html5?
- 10. Làm cách nào để căn giữa SVG trong div?
- 11. Tôi làm cách nào để căn chỉnh Hộp kiểm với nội dung của nó?
- 12. Căn trái văn bản bên trong một nút trong Android
- 13. CSS - Căn trái và phải trên cùng một dòng
- 14. Làm cách nào để căn chỉnh đúng nội dung inputtext?
- 15. Căn chỉnh trái với printf trong Java
- 16. Nhãn hộp kiểm căn chỉnh (web)
- 17. Căn chỉnh một cột và căn trái một cột khác, trong một bảng
- 18. Căn chỉnh văn bản sang bên trái của hộp kiểm trong Windows.Forms
- 19. Làm cách nào để căn chỉnh 3 DIV cạnh nhau?
- 20. Làm cách nào để căn giữa div?
- 21. Làm cách nào để căn chỉnh các mục trong thanh tác vụ ở bên trái?
- 22. Cách tạo nhiều dòng, UIAlertView được căn trái?
- 23. Vì vậy, DOM scrollIntoView căn chỉnh trên cùng/dưới cùng, nhưng những gì về trái/phải?
- 24. Làm cách nào để căn giữa văn bản trong tabhost?
- 25. miglayout: không thể căn phải làm việc
- 26. Căn chỉnh bố cục hai nút sang trái và phải trong Android
- 27. Align giá trị spinner sang phải thay vì trái
- 28. cột biểu đồ căn chỉnh sang trái/phải
- 29. Làm cách nào để căn chỉnh nội dung trong DataTemplate?
- 30. Giả sau khi căn phải
Cảm ơn này là hữu ích ! –
Bây giờ với dấu kiểm thiết kế Material design phải ở bên trái, nhưng mã để cho phép điều này không may là riêng tư nên không thể dễ dàng được quay trở lại. –