Android - Khoảng cách giữa CheckBox và văn bản


256

Có cách nào dễ dàng để thêm phần đệm giữa hộp kiểm trong điều khiển CheckBox và văn bản được liên kết không?

Tôi không thể chỉ thêm không gian hàng đầu, vì nhãn của tôi là nhiều dòng.

Như vậy, văn bản quá gần với hộp kiểm: văn bản thay thế


1
Một giải pháp đơn giản sẽ là sử dụng TextViewvới drawableLeftvà sử dụng drawablePaddingđể cung cấp không gian cho văn bản. Trong mã chỉ cần chuyển trạng thái được chọn và không được chọn.
Muhammad Babar

Tôi chỉ nhận thấy một thuộc tính xml mới có tên android: drawablePadding, được cho là đặt khoảng cách giữa drawable và văn bản. Tôi đã không thử nhưng tôi nghĩ đó là cách khắc phục "thực tế" của google cho vấn đề này.
Peri Hartman

Câu trả lời:


333

Tôi ghét phải trả lời câu hỏi của riêng tôi, nhưng trong trường hợp này tôi nghĩ rằng tôi cần phải làm vậy. Sau khi kiểm tra, @Falmarri đã đi đúng hướng với câu trả lời của mình. Vấn đề là điều khiển CheckBox của Android đã sử dụng thuộc tính android: paddingLeft để lấy văn bản ở đó.

Đường màu đỏ hiển thị giá trị bù paddingLeft của toàn bộ CheckBox

văn bản thay thế

Nếu tôi chỉ ghi đè phần đệm đó trong bố cục XML của mình, thì nó sẽ làm rối bố cục. Đây là cài đặt paddingLeft = "0" nào:

văn bản thay thế

Hóa ra bạn không thể sửa cái này trong XML. Bạn đã làm điều đó trong mã. Đây là đoạn trích của tôi với phần đệm được mã hóa tăng thêm 10dp.

final float scale = this.getResources().getDisplayMetrics().density;
checkBox.setPadding(checkBox.getPaddingLeft() + (int)(10.0f * scale + 0.5f),
        checkBox.getPaddingTop(),
        checkBox.getPaddingRight(),
        checkBox.getPaddingBottom());

Điều này cung cấp cho bạn những điều sau đây, trong đó đường màu xanh lá cây là sự gia tăng của phần đệm. Điều này an toàn hơn mã hóa một giá trị, vì các thiết bị khác nhau có thể sử dụng các ngăn kéo khác nhau cho hộp kiểm.

văn bản thay thế

CẬP NHẬT - Như mọi người gần đây đã đề cập trong câu trả lời dưới đây, hành vi này rõ ràng đã thay đổi trong Jelly Bean (4.2). Ứng dụng của bạn sẽ cần kiểm tra phiên bản nào đang chạy và sử dụng phương pháp thích hợp.

Đối với 4.3+, nó chỉ đơn giản là thiết lập padding_left. Xem câu trả lời của htafoya để biết chi tiết.


108
Không có gì sai khi trả lời câu hỏi của riêng bạn - người khác có thể sẽ gặp vấn đề này trong tương lai và bạn chỉ đưa ra một câu trả lời hay, toàn diện.
AndrewKS

4
Có gì sai khi chỉ thiết lập paddingLeft="48sp"? Hoạt động tốt ở đây, ngay cả khi tôi thay đổi quy mô và định hướng. Mã của bạn đã cho tôi các giá trị đệm thất thường trong danh sách các mục.
harpo

5
@harpo - Bạn không đảm bảo rằng các nhà sản xuất thiết bị khác nhau sẽ không sử dụng đồ họa khác nhau cho hộp kiểm, có nghĩa là phần đệm được mã hóa cứng của bạn có thể phá vỡ bố cục hình ảnh của bạn trên các thiết bị khác nhau. Vì tôi đang đọc phần đệm hiện tại và thêm vào đó sẽ không thành vấn đề, nhưng bạn phải chắc chắn rằng bạn chỉ làm một lần.
DougW

2
@Blundell - Không nhất thiết. Nguồn mở của Android. Một nhà cung cấp thiết bị có thể thay thế một đồ họa hoàn toàn khác với kích thước hoàn toàn khác. Họ thích làm những thứ như vậy vì một số lý do.
DougW

2
Thật không may, bạn không thể sử dụng giải pháp này trong getView()Bộ điều hợp tùy chỉnh (nếu bạn tái chế các chế độ xem của mình), vì phần đệm sẽ tăng vô tận. Để khắc phục vấn đề này, tôi đã phải sử dụng một cái gì đó như thế này : boolean isHackNeeded = Build.VERSION.SDK_INT < 17; float scale = context.getResources().getDisplayMetrics().density; if (isHackNeeded) {CheckBox rb = new CheckBox(context); this.PADDING = rb.getPaddingLeft() + Math.round(10.0f * scale); } else { this.PADDING = Math.round(10.0f * scale); }. Và sau đó sử dụng PADDINGcho mọi CheckBox tôi thổi phồng:check.setPadding(PADDING, check.getPaddingTop() ...
Alex Semeniuk

133

Đưa ra phản hồi @DougW, những gì tôi làm để quản lý phiên bản đơn giản hơn, tôi thêm vào chế độ xem hộp kiểm của mình:

android:paddingLeft="@dimen/padding_checkbox"

nơi dimen được tìm thấy trong hai thư mục giá trị:

giá trị

<resources>

    <dimen name="padding_checkbox">0dp</dimen>

</resources>

giá trị-v17 (4.2 JellyBean)

<resources>

    <dimen name="padding_checkbox">10dp</dimen>

</resources>

Tôi có một kiểm tra tùy chỉnh, sử dụng dps để lựa chọn tốt nhất của bạn.


2
Đây là câu trả lời tốt nhất cho đến nay. mặc dù, nó thực sự phải values-v17là bản sửa lỗi được giới thiệu trong API 17 (theo một số bài viết ở trên)
icecreamman

Một câu trả lời hoàn hảo, chỉ dành cho apis cũ (giá trị / độ mờ) Tôi đặt padding_checkbox thành 0dip (trên lề API 10 là rất lớn) và cho giá trị-v17 10dip như htafoya đề xuất.
Yar

70

Sử dụng thuộc tính android:drawableLeftthay vì android:button. Để đặt phần đệm giữa có thể vẽ và sử dụng văn bản android:drawablePadding. Để định vị sử dụng drawable android:paddingLeft.

<CheckBox
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:button="@null"
        android:drawableLeft="@drawable/check_selector"
        android:drawablePadding="-50dp"
        android:paddingLeft="40dp"
        />

kết quả


1
Xin chào, Đây là một phương pháp hay nhưng lưu ý rằng bạn nhận được thêm bcoz lề trái của hình ảnh mặc định của hộp kiểm tra .. mọi giải pháp cho điều đó
Code_Life

4
thiết lập android:background="@android:color/transparent"và lề trái sẽ biến mất
madeuz

2
Mã ở trên hoạt động hoàn hảo cho các nút radio của tôi và nhất quán trên ranh giới 4.2 OS. Cảm ơn!
gnichola

1
Điều này nên được xếp hạng cao hơn nhiều. Như @gnichola đã nói, điều này hoạt động trên các phiên bản Android và là một giải pháp khá rõ ràng. Tạo một kiểu và gán nó trong chủ đề của bạn như thế này: <item name="android:checkboxStyle">@style/CheckBox</item> Bằng cách đó, bạn có kiểu được xác định một lần và chỉ được tham chiếu một lần.
Rosomack

1
Đồng thời đặt nền thành null (hoặc một cái gì đó tùy chỉnh), nếu không, kẹo mút + sẽ có hiệu ứng gợn tròn lớn bao quanh toàn bộ khung nhìn. Bạn có thể sử dụng nút v21 có thể vẽ bằng cách sử dụng các thẻ <ripple> để đặt lại một gợn thích hợp hơn.
Tom

34

Android 4.2 Jelly Bean (API 17) đặt bộ đệm văn bảnLeft từ nútDrawable (cạnh phải bên trong). Nó cũng hoạt động cho chế độ RTL.

Trước 4.2 paddingLeft đã bỏ qua nútDrawable - nó được lấy từ cạnh trái của chế độ xem CompoundButton.

Bạn có thể giải quyết nó thông qua XML - đặt paddingLeft thành buttonDrawable. Thong + requiredSpace trên các máy Android cũ hơn. Đặt nó thành requiredSpace chỉ trên API 17 trở lên. Ví dụ: sử dụng tài nguyên thứ nguyên và ghi đè trong thư mục tài nguyên value-v17.

Thay đổi được giới thiệu thông qua android.widget.CompoundButton.getCompoundPaddingLeft ();


4
Đây là câu trả lời đúng duy nhất ở đây - nó xác định chính xác vấn đề và cung cấp các giải pháp đơn giản mà tôi đã sử dụng thành công trong nhiều ứng dụng thương mại.
madej

1
Làm thế nào để bạn có được buttonDrawable. Thong trong XML hoặc bạn có mã cứng không?
Jared Kells

1
Tôi quản lý để khắc phục vấn đề này trong một mã cũ bằng cách loại bỏ android:background="@android:color/transparent".
Sabek

Câu trả lời được chấp nhận là tốt và làm việc, nhưng câu trả lời này là đơn giản và hiệu quả. Điều này nên được chấp nhận câu trả lời.
Reaz Murshed

27

Có, bạn có thể thêm phần đệm bằng cách thêm phần đệm.

android:padding=5dp


4
Điều này thực sự hoạt động ... loại. Đối với một, chỉ cần paddingLeft, không phải tất cả các padding. Tuy nhiên, có vẻ như paddingLeft đã được đặt thành giá trị khoảng 40dp. Nếu tôi đặt nó> 40dp thì nó sẽ di chuyển đi, nếu tôi đặt nó <40dp thì nó sẽ di chuyển dưới hộp kiểm. Tôi sẽ đánh dấu điều này là chính xác và mở một câu hỏi khác, bởi vì tôi lo ngại về điều đó.
DougW

Vâng, tôi không có ý tưởng mà không nhìn thấy bố trí của bạn.
Falmarri

vâng, không hoạt động..một thiết bị samsung tôi gặp vấn đề.
Ranjith Kumar

1
Thêm phần đệm bằng cách thêm phần đệm âm thanh hợp pháp!
Bài giảng

21

Nếu bạn muốn một thiết kế sạch sẽ không có mã, hãy sử dụng:

<CheckBox
   android:id="@+id/checkBox1"
   android:layout_height="wrap_content"
   android:layout_width="wrap_content"
   android:drawableLeft="@android:color/transparent"
   android:drawablePadding="10dp"
   android:text="CheckBox"/>

Mẹo nhỏ là đặt màu trong suốt cho android:drawableLeftvà gán giá trị cho android:drawablePadding. Ngoài ra, độ trong suốt cho phép bạn sử dụng kỹ thuật này trên bất kỳ màu nền nào mà không có hiệu ứng phụ - như màu không khớp.


16

API 17 trở lên, bạn có thể sử dụng:

android: paddingStart = "24dp"

API 16 trở xuống, bạn có thể sử dụng:

android: paddingLeft = "24dp"


1
Câu trả lời rất hay. Tôi không thể tưởng tượng làm thế nào phần đệm sẽ cung cấp khoảng trống giữa hộp kiểm và văn bản. Thông thường Padding Trái có nghĩa là trái của thành phần.
Mohamed Ibrahim

14

Trong trường hợp của tôi, tôi đã giải quyết vấn đề này bằng cách sử dụng thuộc tính CheckBox sau trong XML:

*

android: paddingLeft = "@ dimen / Activity_horizontal_margin"

*


Câu trả lời rất hay. Tôi không thể tưởng tượng làm thế nào phần đệm sẽ cung cấp khoảng trống giữa hộp kiểm và văn bản. Thông thường Padding Trái có nghĩa là trái của thành phần.
Mohamed Ibrahim

13

Giải pháp đơn giản, thêm dòng này vào thuộc tính CheckBox , thay thế 10dp bằng giá trị khoảng cách bạn muốn

android:paddingLeft="10dp"

10

Tôi không biết các bạn, nhưng tôi đã thử nghiệm

<CheckBox android:paddingLeft="8mm" và chỉ di chuyển văn bản sang phải, không phải toàn bộ điều khiển.

Nó phù hợp với tôi tốt.


1
Gần đây tôi đã không thử điều này, vì vậy chắc chắn là nó có thể hoạt động trên một thiết bị cụ thể hoặc phiên bản HĐH Android mới hơn. Tuy nhiên, tôi thực sự khuyên bạn nên kiểm tra các thiết lập khác nhau, vì điều này chắc chắn không hoạt động tại thời điểm tôi hỏi câu hỏi này.
DougW

Tôi đang thấy điều này hành xử khác nhau giữa 2.3.3 và 4.2 (không chắc chắn ở đâu giữa sự thay đổi xảy ra).
Nate

Ý bạn là dp không mm?
Chrispix

10

Tại sao không chỉ mở rộng Android CheckBox để có phần đệm tốt hơn thay thế. Bằng cách đó, thay vì phải sửa mã trong mỗi lần bạn sử dụng CheckBox, bạn chỉ có thể sử dụng CheckBox cố định thay thế.

Mở rộng CheckBox đầu tiên:

package com.whatever;

import android.content.Context;
import android.util.AttributeSet;
import android.widget.CheckBox;

/**
 * This extends the Android CheckBox to add some more padding so the text is not on top of the
 * CheckBox.
 */
public class CheckBoxWithPaddingFix extends CheckBox {

    public CheckBoxWithPaddingFix(Context context) {
        super(context);
    }

    public CheckBoxWithPaddingFix(Context context, AttributeSet attrs, int defStyle) {
        super(context, attrs, defStyle);
    }

    public CheckBoxWithPaddingFix(Context context, AttributeSet attrs) {
        super(context, attrs);
    }

    @Override
    public int getCompoundPaddingLeft() {
        final float scale = this.getResources().getDisplayMetrics().density;
        return (super.getCompoundPaddingLeft() + (int) (10.0f * scale + 0.5f));
    }
}

Thứ hai trong xml của bạn thay vì tạo một CheckBox bình thường, hãy tạo một cái mở rộng của bạn

<com.whatever.CheckBoxWithPaddingFix
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:text="Hello there" />

2
Bạn nên thêm 'nếu' để tránh làm điều đó nếu HĐH> 4.2 vì trong Jelly Bean, họ đã "sửa" cái này.
Martin Marconcini

1
Thực tế> = 4.2 (17).
Aleks N.

6

Tôi vừa kết luận về điều này:

Ghi đè CheckBox và thêm phương thức này nếu bạn có thể vẽ tùy chỉnh:

@Override
public int getCompoundPaddingLeft() {

    // Workarround for version codes < Jelly bean 4.2
    // The system does not apply the same padding. Explantion:
    // http://stackoverflow.com/questions/4037795/android-spacing-between-checkbox-and-text/4038195#4038195

    int compoundPaddingLeft = super.getCompoundPaddingLeft();

    if (Build.VERSION.SDK_INT < Build.VERSION_CODES.JELLY_BEAN_MR1) {
        Drawable drawable = getResources().getDrawable( YOUR CUSTOM DRAWABLE );
        return compoundPaddingLeft + (drawable != null ? drawable.getIntrinsicWidth() : 0);
    } else {
        return compoundPaddingLeft;
    }

}

hoặc điều này nếu bạn sử dụng hệ thống drawable:

@Override
public int getCompoundPaddingLeft() {

    // Workarround for version codes < Jelly bean 4.2
    // The system does not apply the same padding. Explantion:
    // http://stackoverflow.com/questions/4037795/android-spacing-between-checkbox-and-text/4038195#4038195

    int compoundPaddingLeft = super.getCompoundPaddingLeft();

    if (Build.VERSION.SDK_INT < Build.VERSION_CODES.JELLY_BEAN_MR1) {
        final float scale = this.getResources().getDisplayMetrics().density;
        return compoundPaddingLeft + (drawable != null ? (int)(10.0f * scale + 0.5f) : 0);
    } else {
        return compoundPaddingLeft;
    }

}

Cảm ơn câu trả lời :)


4

Hành vi này dường như đã thay đổi trong Jelly Bean. Thủ thuật paddingLeft thêm phần đệm bổ sung, làm cho văn bản trông quá xa đúng. Có ai khác nhận thấy điều đó không?


Cảm ơn các cập nhật! Tôi đã thêm một lưu ý cho câu trả lời của tôi về điều này.
DougW

4

Đối với khoảng trắng giữa dấu kiểm và văn bản sử dụng:

android:paddingLeft="10dp"

Nhưng nó trở nên hơn 10dp, vì dấu kiểm có chứa phần đệm (khoảng 5dp) xung quanh. Nếu bạn muốn xóa phần đệm, hãy xem Cách xóa phần đệm xung quanh Android CheckBox :

android:paddingLeft="-5dp"
android:layout_marginStart="-5dp"
android:layout_marginLeft="-5dp"
// or android:translationX="-5dp" instead of layout_marginLeft

2
<CheckBox
        android:paddingRight="12dip" />

@AndrewKS - Đã kiểm tra. Như mong đợi, điều này thêm phần đệm vào toàn bộ điều khiển, không nằm giữa hộp kiểm và văn bản.
DougW

Bạn có lẽ tốt hơn là có văn bản trong một TextView riêng biệt.
AndrewKS

@AndrewKS - Ý tưởng tồi cho khả năng sử dụng. Tôi muốn người dùng có thể chạm vào văn bản và chọn / bỏ chọn hộp kiểm. Nó cũng phá vỡ nhiều tính năng trợ năng, giống như khi bạn làm điều đó trong một trang web.
DougW

Bad idea for usabilityKhông, không phải vậy. Đặt cả hộp kiểm và textview trong một bố cục tuyến tính và làm cho linearlayout có thể chạm vào được.
Falmarri

1
-1 Câu trả lời này không giải quyết được vấn đề được đặt ra trong câu hỏi, đó là về khoảng cách giữa hình ảnh và văn bản
David Laing

2

Nếu bạn có bộ chọn hình ảnh tùy chỉnh cho hộp kiểm hoặc radiobutton, bạn phải đặt cùng một nút và thuộc tính nền như thế này:

            <CheckBox
                android:id="@+id/filter_checkbox_text"
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:button="@drawable/selector_checkbox_filter"
                android:background="@drawable/selector_checkbox_filter" />

Bạn có thể kiểm soát kích thước của hộp kiểm hoặc phần đệm nút radio với thuộc tính nền.


Không, bạn không phải làm điều này. Điều này không được chấp nhận nếu bạn có một nền tùy chỉnh khác với hộp kiểm / radiobutton glyph.
andr

2

chỉ cần bạn có một tham số trong tệp xml

android:paddingLeft="20dp"

2

Đặt minHeight và minWidth thành 0dpgiải pháp rõ ràng và trực tiếp nhất đối với tôi trên Android 9 API 28:

<CheckBox
        android:id="@+id/checkbox"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:minHeight="0dp"
        android:minWidth="0dp" />

1

Nếu bạn đang tạo các nút tùy chỉnh, ví dụ: xem thay đổi giao diện của hộp kiểm

Sau đó, chỉ cần tăng chiều rộng của btn_check_label_background.9.png bằng cách thêm một hoặc hai cột pixel trong suốt ở giữa hình ảnh; để lại các dấu 9-patch như chúng là.


1

Những gì tôi đã làm, có một TextViewvà một CheckBoxbên trong một (Tương đối) Layout. Các TextViewhiển thị các văn bản mà tôi muốn người dùng để xem, và CheckBoxkhông có bất kỳ văn bản. Bằng cách đó, tôi có thể đặt vị trí / phần đệm của CheckBoxbất cứ nơi nào tôi muốn.


1

Tôi gặp vấn đề tương tự với Galaxy S3 mini (android 4.1.2) và tôi chỉ đơn giản thực hiện hộp kiểm tùy chỉnh của mình mở rộng AppCompatCheckBox thay vì CheckBox. Bây giờ nó hoạt động hoàn hảo.


0

Bạn cần lấy kích thước của hình ảnh mà bạn đang sử dụng để thêm phần đệm của bạn vào kích thước này. Trên các thiết bị Android, họ có thể rút được bạn chỉ định trên src và sử dụng kích thước của nó sau đó. Vì đó là một biến riêng tư và không có getters bạn không thể truy cập vào nó. Ngoài ra, bạn không thể lấy com.android.iternal.R.stylizable.CompoundButton và lấy drawable từ đó.

Vì vậy, bạn cần tạo kiểu dáng riêng của mình (ví dụ: custom_src) hoặc bạn có thể thêm nó trực tiếp khi triển khai RadioButton:

public class CustomRadioButton extends RadioButton {

    private Drawable mButtonDrawable = null;

    public CustomRadioButton(Context context) {
        this(context, null);
    }

    public CustomRadioButton(Context context, AttributeSet attrs) {
        this(context, attrs, 0);
    }

    public CustomRadioButton(Context context, AttributeSet attrs, int defStyle) {
        super(context, attrs, defStyle);
        mButtonDrawable = context.getResources().getDrawable(R.drawable.rbtn_green);
        setButtonDrawable(mButtonDrawable);
    }

    @Override
    public int getCompoundPaddingLeft() {
        if (Util.getAPILevel() <= Build.VERSION_CODES.JELLY_BEAN_MR1) {
            if (drawable != null) {
                paddingLeft += drawable.getIntrinsicWidth();
            }
        }
        return paddingLeft;
    }
}

0

Vì bạn có thể sử dụng bộ chọn có thể vẽ cho thuộc tính của mình, android:buttonbạn cần thêm android:constantSize="true"và / hoặc chỉ định một mức có thể rút được mặc định như thế này:

<?xml version="1.0" encoding="utf-8"?>
<selector xmlns:android="http://schemas.android.com/apk/res/android" android:constantSize="true">
  <item android:drawable="@drawable/check_on" android:state_checked="true"/>
  <item android:drawable="@drawable/check_off"/>
</selector>

Sau đó, bạn cần chỉ định android:paddingLeftthuộc tính trong hộp kiểm xml của bạn.

Nhược điểm:

Trong trình chỉnh sửa bố cục, bạn sẽ văn bản nằm dưới hộp kiểm có api 16 trở xuống, trong trường hợp đó bạn có thể sửa nó bằng cách tạo cho bạn lớp hộp kiểm tùy chỉnh như được đề xuất nhưng đối với api cấp 16.

Cơ sở lý luận:

đó là một lỗi vì StateListDrawable#getIntrinsicWidth()cuộc gọi được sử dụng nội bộ CompoundButtonnhưng nó có thể trả về < 0giá trị nếu không có trạng thái hiện tại và không có kích thước không đổi được sử dụng.


0

Tất cả những gì bạn phải làm để khắc phục vấn đề này là thêm android:singleLine="true"vào checkBoxbố cục Android xml của bạn:

<CheckBox 
   android:id="@+id/your_check_box"
   android:layout_width="match_parent"
   android:layout_height="wrap_content"
   android:singleLine="true"
   android:background="@android:color/transparent"
   android:text="@string/your_string"/>

và không có gì đặc biệt sẽ được thêm vào theo chương trình.


0

Hình ảnh hộp kiểm bị chồng chéo khi tôi sử dụng các ngăn kéo của riêng mình từ bộ chọn, tôi đã giải quyết vấn đề này bằng cách sử dụng mã dưới đây:

CheckBox cb = new CheckBox(mActivity);
cb.setText("Hi");
cb.setButtonDrawable(R.drawable.check_box_selector);
cb.setChecked(true);
cb.setPadding(cb.getPaddingLeft(), padding, padding, padding);

Cảm ơn Alex Semeniuk


0

Tôi kết thúc với vấn đề này bằng cách thay đổi hình ảnh. Chỉ cần thêm nền trong suốt trong tập tin png. Giải pháp này hoạt động tuyệt vời trên tất cả các API.


0

Có lẽ đã muộn, nhưng tôi đã tạo các phương thức tiện ích để quản lý vấn đề này.

Chỉ cần thêm phương thức này vào dụng cụ của bạn:

public static void setCheckBoxOffset(@NonNull  CheckBox checkBox, @DimenRes int offsetRes) {
    float offset = checkBox.getResources().getDimension(offsetRes);
    setCheckBoxOffsetPx(checkBox, offset);
}

public static void setCheckBoxOffsetPx(@NonNull CheckBox checkBox, float offsetInPx) {
    int leftPadding;
    if (Build.VERSION.SDK_INT <= Build.VERSION_CODES.JELLY_BEAN) {
        leftPadding = checkBox.getPaddingLeft() + (int) (offsetInPx + 0.5f);
    } else {
        leftPadding = (int) (offsetInPx + 0.5f);
    }
    checkBox.setPadding(leftPadding,
            checkBox.getPaddingTop(),
            checkBox.getPaddingRight(),
            checkBox.getPaddingBottom());
}

Và sử dụng như thế này:

    ViewUtils.setCheckBoxOffset(mAgreeTerms, R.dimen.space_medium);

hoặc như thế này:

    // Be careful with this usage, because it sets padding in pixels, not in dp!
    ViewUtils.setCheckBoxOffsetPx(mAgreeTerms, 100f);

-1

Thay vì điều chỉnh văn bản cho Hộp kiểm, tôi đã thực hiện theo cách này và nó đã làm việc cho tôi cho tất cả các thiết bị. 1) Trong XML, thêm hộp kiểm và một khung nhìn văn bản để liền kề nhau; giữ một khoảng cách 2) Đặt kích thước văn bản hộp kiểm thành 0sp. 3) Thêm văn bản tương đối vào văn bản đó bên cạnh hộp kiểm.


Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.