ngắn Trả lời: Nếu bạn đang xác định layout_margin trong một phong cách tùy chỉnh, phong cách này phải được áp dụng một cách rõ ràng cho mỗi điểm cá nhân mà bạn muốn có biên độ quy định (như đã thấy trong mẫu mã bên dưới). Bao gồm phong cách này trong một chủ đề và áp dụng nó vào ứng dụng của bạn hoặc một hoạt động sẽ không hoạt động.
<TableLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:background="#FFFFFF" >
<TableRow>
<EditText android:hint="@string/last_name" style="@style/edit_text_default" />
</TableRow>
<TableRow>
<EditText android:hint="@string/first_name" style="@style/edit_text_default" />
</TableRow>
</TableLayout>
Giải thích: Thuộc tính bắt đầu bằng layout_
là LayoutParams, hoặc một trong các lớp con của nó (ví dụ MarginLayoutParams). LayoutParams
được sử dụng theo lượt xem để nói với cha mẹ của họ ViewGroup cách họ muốn được sắp xếp.Mỗi và mọi lớp ViewGroup
triển khai lớp lồng nhau mở rộng ViewGroup.LayoutParams
. Do đó, LayoutParams
dành riêng cho loại của ViewGroup
. Điều này có nghĩa là trong khi TableLayout
và LinearLayout
cả hai có thể có layout_margin
là một trong số đó là LayoutParams
, chúng được xem là thuộc tính hoàn toàn khác nhau.
Vì vậy, layout_margin
không chỉ là thuộc tính chung có thể được áp dụng ở bất kỳ đâu. Nó phải được áp dụng trong bối cảnh của một ViewGroup
xác định cụ thể nó như một đối số hợp lệ. Chế độ xem phải là nhận biết loại của phụ huynh ViewGroup
khi áp dụng LayoutParams
.
Chỉ định layout_margin theo kiểu, bao gồm kiểu đó trong chủ đề và cố gắng áp dụng chủ đề đó cho ứng dụng/hoạt động sẽ dẫn đến thuộc tính bố cục bị giảm, vì không có bố cục ViewGroup nào được chỉ định và do đó đối số không hợp lệ. Tuy nhiên, áp dụng kiểu dáng cho chế độ xem EditText
đã được xác định bằng một công việc TableLayout
, vì phụ huynh ViewGroup
(số TableLayout
) được biết.
Nguồn:
tài liệu Android trên Layout Parameters.
Câu trả lời được đưa ra cho this question bởi kỹ sư khung Android và người dùng StackOverflow adamp.
Ngoài ra, câu trả lời được cung cấp cho this question bởi người dùng StackOverflow inazaruk.
Tôi không muốn bất kỳ tín dụng của câu trả lời này các anh hùng thực là ở đây - https://stackoverflow.com/a/13365288/4741746
Nguồn
2017-08-01 12:57:40
tốt, tôi được quản lý với một workaround. Thay vì đặt lề, tôi chỉ xác định nút bên dưới thuộc tính. ví dụ: chỉ định button2, 3 và 4 được căn chỉnh bên dưới button1 chẳng hạn. Tôi không tìm được cách nào khác. – kiki