1. ホーム
  2. アンドロイド

[解決済み】Android - チェックボックスとテキストの間に間隔を空ける

2022-03-31 03:26:07

質問

チェックボックス コントロールのチェックボックスと関連するテキストの間にパディングを追加する簡単な方法はありますか?

ラベルが複数行になるため、先頭にスペースを入れるだけではダメなのですが。

このままでは、テキストがチェックボックスに寄りすぎています。

解決方法は?

自分の質問に答えるのは嫌ですが、この場合は必要だと思います。 調べてみると、@Falmarriさんの回答は正しい方向に進んでいました。 問題は、AndroidのCheckBoxコントロールがすでにandroid:paddingLeftプロパティを使用してテキストの位置を取得していることです。

赤い線は、CheckBox全体のpaddingLeftオフセット値を示している

そのパディングをXMLレイアウトで上書きしただけでは、レイアウトがめちゃくちゃになります。 paddingLeft="0"を設定すると、以下のようになります。

この問題は、XMLでは解決できないことがわかりました。 コードで修正する必要があります。 以下は、ハードコードでパディングを10dp増加させたスニペットです。

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

この結果、以下のようになります。緑色の線はパディングの増加分です。 デバイスによってチェックボックスの描画が異なる可能性があるため、値をハードコードするよりもこの方法が安全です。

UPDATE - 最近、以下の回答で言及されているように、この動作は明らかにJelly Bean (4.2) で変更されています。 あなたのアプリは、どのバージョンで動作しているかを確認し、適切な方法を使用する必要があります。

4.3以上では、単にpadding_leftを設定するだけです。詳しくはhtafoyaさんの回答をご覧ください。