như mình giải thích ở trên, bạn dùng contraint layout nhưng chưa set constraint cho các view con, còn vị trí lúc render preview chỉ là vị trí ảo cho bạn nhìn thôi, sở dĩ gọi là vị trí ảo vì mấy thuộc tính này:
tools:layout_editor_absoluteX="124dp"
hoặc
tools:layout_editor_absoluteY="231dp"
2 thuộc tính trên chỉ có tác dụng với preview chứ lên máy thật là bị ignore hết.
mấy thuộc tính constraint là mấy thuộc tính có tên tương tự thế này:
app:layout_constraintRight_toRightOf="parent" // -> nghĩa là lấy cạnh phải của view đến cạnh phải màn hình để áp dụng neo.
android:layout_marginRight="244dp" // -> nghĩa là cách 244dp tính từ điểm neo gần nhất bên phải.
// kết hợp 2 thuộc tính trên sẽ suy ra -> cạnh phải của view này phải có khoảng cách tới cạnh phải màn hình 244dp
// 2 thuộc tính trên mới là thuộc tính quy định vẽ view lên màn hình ở chỗ nào khi chạy trên máy thật
Mấy cái này có nhiều trên mạng mà, cứ Google về constraint layout là ra, hướng dẫn đầy đủ tường tận luôn. Không nên than thở vội tội nghiệp Android lắm