Giới thiệu
Bài viết minh họa cách thiết lập margin (lề) cho View con trong LinearLayout thông qua code Java/Kotlin thay vì XML.
Các bước thực hiện
Bước 1: Tạo dự án mới
Khởi tạo project Android Studio.
Bước 2: Layout container LinearLayout (res/layout/activity_main.xml)
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="https://schemas.android.com/apk/res/android"
xmlns:tools="https://schemas.android.com/tools"
android:layout_width="match_parent"
android:id="@+id/linearLayout"
android:layout_height="match_parent"
android:orientation="vertical"
tools:context=".MainActivity" />
Bước 3: Tạo Button và set margin bằng code (src/MainActivity.java)
package app.tutorialspoint.com.sample;
import android.os.Bundle;
import android.support.v7.app.AppCompatActivity;
import android.widget.Button;
import android.widget.LinearLayout;
public class MainActivity extends AppCompatActivity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
LinearLayout ll = findViewById(R.id.linearLayout);
// Tạo LayoutParams cho LinearLayout
LinearLayout.LayoutParams layoutParams = new LinearLayout.LayoutParams(
LinearLayout.LayoutParams.MATCH_PARENT,
LinearLayout.LayoutParams.WRAP_CONTENT
);
// Đặt margin: left=30, top=20, right=30, bottom=0 (đơn vị pixel)
layoutParams.setMargins(30, 20, 30, 0);
Button okButton = new Button(this);
okButton.setText("Nút bấm có margin");
ll.addView(okButton, layoutParams);
}
}
Bước 4: AndroidManifest.xml
<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="https://schemas.android.com/apk/res/android"
package="app.tutorialspoint.com.sample">
<uses-permission android:name="android.permission.VIBRATE" />
<application
android:allowBackup="true"
android:icon="@mipmap/ic_launcher"
android:label="@string/app_name"
android:roundIcon="@mipmap/ic_launcher_round"
android:supportsRtl="true"
android:theme="@style/AppTheme">
<activity android:name=".MainActivity">
<intent-filter>
<action android:name="android.intent.action.MAIN" />
<category android:name="android.intent.category.LAUNCHER" />
</intent-filter>
</activity>
</application>
</manifest>
Chạy ứng dụng
Kết nối thiết bị, nhấn Run. Button sẽ hiển thị với margin trái/phải 30px, trên 20px.

Kiến thức bổ sung
1. Chuyển đổi dp sang pixel (khuyên dùng)
public static int dpToPx(Context context, int dp) {
float density = context.getResources().getDisplayMetrics().density;
return Math.round(dp * density);
}
// Sử dụng
layoutParams.setMargins(dpToPx(this, 16), dpToPx(this, 12), dpToPx(this, 16), 0);
2. Margin cho các ViewGroup khác
- RelativeLayout:
RelativeLayout.LayoutParams - FrameLayout:
FrameLayout.LayoutParams - ConstraintLayout:
ConstraintLayout.LayoutParams(phức tạp hơn, dùng ConstraintSet) - ViewGroup.MarginLayoutParams: Class cha chung có
setMargins()
3. Cập nhật margin động
// Lấy params hiện tại, sửa margin, apply lại LinearLayout.LayoutParams params = (LinearLayout.LayoutParams) button.getLayoutParams(); params.setMargins(newLeft, newTop, newRight, newBottom); button.setLayoutParams(params); // hoặc button.requestLayout()
4. Kotlin Extension Function (tiện lợi)
fun View.setMargins(@IntRange(from = 0) left: Int, @IntRange(from = 0) top: Int,
@IntRange(from = 0) right: Int, @IntRange(from = 0) bottom: Int) {
val params = layoutParams as ViewGroup.MarginLayoutParams
params.setMargins(left, top, right, bottom)
layoutParams = params
}
// Dùng: button.setMargins(16.dp, 8.dp, 16.dp, 0)