Giao diện kéo thả bị thay đổi khi chạy

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

4 Likes

mình thì nhờ từ khóa của bạn là cái layout đấy thì mình ra rồi .Nhưng từ lúc mà làm winform đến javaswing uwp app chưa thấy bao giờ preview một kiểu mà hiển thị một kiểu như trên cả nên thấy hơi lạ

không lạ đâu, giả sử trong trường hợp chưa set constraint thì cho view hiện ở đâu, dồn hết vào 1 chỗ sao được, rồi lần sau mở lại project nữa chứ, sẽ thế nào nếu bạn đang làm dở, lúc quay lại thì ôi thôi, mấy chục view chúm chụm vào 1 chỗ, nếu bạn đặt constraint chuẩn thì sẽ hiện theo constraint, còn nếu chưa đặt chuẩn thì hiện theo hint để cho bạn còn thấy đường mà làm nữa chứ.

4 Likes

Đọc tới đây, chã muốn bảo nữa, thôi kệ

1 Like

Mỗi công nghệ có cách tạo view khác nhau nên không thể đi so một công nghệ này với một công nghệ khác được. Chỉ có 2 trường hợp: một là bạn chưa tìm hiểu hết, hai là bạn “không có duyên” với công nghệ đó
Thật sự mình thấy Android chỉ khó ở layout, một phần do mình không học chuyên sâu về Android mà chỉ làm app khi rảnh rỗi thôi, cứ RelativeLayout, LinearLyout mà chiến thôi. Như mình đã nói, khuyên bạn nên chuyển sang RelativeLayout nếu bạn muốn làm gui free style. Đảm bảo với bạn là What You See Is What You Get

1 Like

Mình cũng thấy Android Studio và IntelliJ nó cc thật :laughing:
CC ở đây là nó chậm và hay freeze cửa sổ, còn lại thì toẹt zời :laughing:

1 Like

Nói chung cứ lập trình thì nên mua máy 8GB RAM trở lên là ok, ngần ấy RAM chắc đủ chơi với AS rồi (nếu ko xài máy ảo của nó).

P/s: máy mình RAM 4GB :smile:

3 Likes

Lúc trước máy có 4GB RAM làm webapp Java trên Netbeans còn giật lên giật xuống, nói chi đến Android Studio nó đơ ngay khi Gradle Build :wink:

2 Likes

chai sẻ kinh nghiệm học java web đi bạn .Như mình mình ko thèm mua smartphone android luôn đầu từ cho ssd

code vs android studio ngon mà, cơ mà quen vơi phím tắt bên eclipse quà bên android thấy tù quá =))
mấy yếu tắt chức năng auto build đi,

sửa lỗi này thế nào đấy bác
e zũng bị vậy mà kb sửa thế nào

1 Like

vụ gì sửa lỗi nào hả bác

1 Like

Đã mấy tháng trôi qua, bây giờ nhìn lại câu hỏi bạn đã hiểu vì sao nó chạy không được như ý chưa?

Bạn này chưa đủ kiến thức, chưa đủ trình để hiểu về hệ thống layout trong Android.
Mặc dù nó hơi phức tạp để giải thích, nhưng chắc mình cũng sẽ gắng giải thích hoặc cho một vài từ khóa, link để bạn ấy hiểu.

Thôi dẹp.

Cách sửa lỗi như sau https://www.youtube.com/watch?v=6ovyAiD7eDg&feature=youtu.be

Hoặc thay android.support.constraint.ConstraintLayout bằng RelactiveLayout trong phần text của “activity_main.xml”

1 Like

hix nếu mà để nhẹ nhàng thì nên dùng eclipse để code , 1 emulator để chạy app (bộ sdk của android hoặc nox player ) , 1 server để test , thì có lẽ sẽ nhẹ nhàng hơn rất nhiều với điều kiện code giao diện bằng tay không kéo thả , mình quen ông anh dùng máy ram 2GB-4GB vẫn code được app android mà …:v

Anh em cho hỏi cái Hello World màu xanh trong giao diện design ở đâu chình ình xuất hiện rồi bất thình lình biến mất như ma làm @@.

LoginActivity:

<?xml version="1.0" encoding="utf-8"?>
<android.support.constraint.ConstraintLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
tools:context=".LoginActivity">

<EditText
    android:id="@+id/editText"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:ems="10"
    android:inputType="textPersonName"
    android:text="Name"
    tools:layout_editor_absoluteX="95dp"
    tools:layout_editor_absoluteY="47dp" />
</android.support.constraint.ConstraintLayout>
83% thành viên diễn đàn không hỏi bài tập, còn bạn thì sao?