1. ホーム
  2. android

Android LでCardViewウィジェットのパディングを設定する方法

2023-07-25 21:10:32

質問

私は android:paddingLeftandroid:paddingTop のパディングを設定するために、新しい CardView ウィジェットにパディングを設定する必要がありますが、うまくいきません。

の中にあるすべてのコントロールのマージンを設定することができます。 CardView の中にあるすべてのコントロールにマージンを設定することができますが、コントロールが多すぎる場合は面倒です。

新しいカードビューウィジェットのパディングを設定する方法は?

<android.support.v7.widget.CardView
    xmlns:card_view="http://schemas.android.com/apk/res-auto"
    android:id="@+id/card_view"
    android:layout_gravity="center"
    android:layout_width="match_parent"
    android:layout_height="200dp"
    android:paddingLeft="20dp"
    android:paddingRight="@dimen/activity_horizontal_margin"
    android:paddingTop="20dp"
    android:paddingBottom="@dimen/activity_vertical_margin"
    card_view:cardCornerRadius="2dp">

    <TextView
        android:id="@+id/info_text"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:text="Hello World!"/>
</android.support.v7.widget.CardView>

どのように解決するのですか?

L-previewの前のCardViewは RoundRectDrawableWithShadow を上書きして背景を描画します。 Drawable.getPadding() を上書きし、影のパディングを追加します。ビューの背景は、インフレーションの後にコードによって設定され、XMLで指定された任意のパディングを上書きします。

2つのオプションがあります。

  1. 実行時にパディングを設定するには View.setPadding() を使用し、影を調整するように注意してください(ただし、L-previewの前に限る!)。
  2. パディングを指定したレイアウトの中にすべてを配置します。

後者のオプションが最も安全です。

<android.support.v7.widget.CardView
    xmlns:card_view="http://schemas.android.com/apk/res-auto"
    android:id="@+id/card_view"
    android:layout_gravity="center"
    android:layout_width="match_parent"
    android:layout_height="200dp"
    card_view:cardCornerRadius="2dp">

    <FrameLayout
        android:paddingLeft="20dp"
        android:paddingRight="@dimen/activity_horizontal_margin"
        android:paddingTop="20dp"
        android:paddingBottom="@dimen/activity_vertical_margin">

        <TextView
            android:id="@+id/info_text"
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:text="Hello World!"/>
    </FrameLayout>
</android.support.v7.widget.CardView>