tôi đã bị mắc kẹt trong một vấn đề lẻ với Android - Tôi muốn có một nút trông như thế này:Android: làm thế nào để tạo ra một nút với hình ảnh và văn bản được cả trung
|-----------------------------------------------------------------------|
| [icon] <5px> [text text text] |
|-----------------------------------------------------------------------|
và nhóm ([biểu tượng] < 5px> [văn bản văn bản]] sẽ được căn giữa. Lưu ý rằng 5px được sử dụng giống như một trình giữ chỗ cho bất kỳ phần đệm nào bạn muốn có giữa biểu tượng và văn bản
Tôi tìm thấy một số câu trả lời ở đây là thu hút nhiều hoặc ít xung quanh hoặc đặt nền (mà tôi không muốn do tôi có một nền tảng khác) hoặc sử dụng thuộc tính android: drawableLeft để đặt biểu tượng.
Tuy nhiên, có vẻ như tài liệu của phương pháp setCompoundDrawablesWithIntrinsicBounds là một chút gây hiểu nhầm (see here). Nó nói rằng hình ảnh được đặt ở bên trái/phải/trên/dưới cùng của TEXT mà không đúng. Biểu tượng được đặt ở phía tương ứng của nút. Ví dụ:
Thiết lập android: drawableLeft tài sản đặt biểu tượng vào vị trí bên trái nhất và được tôi này (với CENTER trọng lực):
|-----------------------------------------------------------------------|
| [icon] [text text text] |
|-----------------------------------------------------------------------|
hay này (với trọng lực trái):
|-----------------------------------------------------------------------|
| [icon] [text text text] |
|-----------------------------------------------------------------------|
Cả hai đều xấu xí như địa ngục :(
tôi tìm thấy một workaround trông như thế này:
public static void applyTextOffset(Button button, int buttonWidth) {
int textWidth = (int) button.getPaint().measureText(button.getText().toString());
int padding = (buttonWidth/2) - ((textWidth/2) + Constants.ICON_WIDTH + Constants.ICON_TO_TEXT_PADDING);
button.setPadding(padding, 0, 0, 0);
button.setCompoundDrawablePadding(-padding);
}
Và nó hoạt động nhiều hay ít nhưng tôi không thấy nó theo ý thích của tôi vì những lý do sau đây:
- nó đòi hỏi phải biết chiều rộng nút. Với các nút có kích thước tự động, nó sẽ không được biết cho đến khi bố cục thực tế được thực hiện. Google khuyên bạn nên sử dụng trình nghe để tìm hiểu chiều rộng thực tế sau khi hiển thị xong nhưng điều này làm phức tạp mã. không có
- Tôi cảm thấy như tôi đang đảm nhận trách nhiệm bố trí từ động cơ bố trí Android
Là một giải pháp thanh lịch hơn?
Hy vọng điều này, do đó bạn đã giải quyết vấn đề bạn – Ishu