programing

Android:그릴 수 있는 왼쪽 여백 및/또는 패딩

lastmoon 2023. 6. 6. 10:36
반응형

Android:그릴 수 있는 왼쪽 여백 및/또는 패딩

추가한 이미지에 대한 여백 또는 패딩을 설정할 수 있습니까?android:drawableLeft?

세푸스가 언급한 바와 같이.android:drawablePadding단추가 충분히 작은 경우에만 텍스트와 그리기 가능한 사이에 패딩을 적용합니다.

큰 는 더 버 배 을 튼 사 할 있 니 수 다 습 용 때 큰 치 할 다 니 ▁you 있 ▁use ▁when 습 ▁buttons ▁out ▁larger 수 ▁laying ▁canandroid:drawablePadding android:paddingLeft그리고.android:paddingRight텍스트를 강제로 누르고 버튼의 중심을 향해 안쪽으로 그릴 수 있습니다.왼쪽과 오른쪽 패딩을 개별적으로 조정하면 레이아웃을 매우 세부적으로 조정할 수 있습니다.

다음은 패딩을 사용하여 텍스트와 아이콘을 기본값보다 가까이 밀어넣는 예제 단추입니다.

<Button android:text="@string/button_label" 
    android:id="@+id/buttonId"
    android:layout_width="160dip"
    android:layout_height="60dip"
    android:layout_gravity="center"
    android:textSize="13dip"
    android:drawableLeft="@drawable/button_icon"
    android:drawablePadding="2dip"
    android:paddingLeft="30dip"
    android:paddingRight="26dip"
    android:singleLine="true"
    android:gravity="center" />  

TextView에는 Android:drawablePadding 속성이 있으며 이 속성은 다음과 같은 기능을 수행해야 합니다.

안드로이드:드로잉 패딩

그리기 가능한 항목과 텍스트 사이의 채우기입니다.

치수 값이어야 합니다. 치수 값은 "14.5sp"와 같은 단위가 추가된 부동 소수점 번호입니다.사용 가능한 단위는 px(픽셀), dp(밀도 독립 픽셀), sp(기본 글꼴 크기에 기반한 배율 픽셀), 인치(인치), mm(밀리미터)입니다.

리소스("@[package:]type:name" 형식) 또는 테마 속성("?" 형식)에 대한 참조일 수도 있습니다.[package:][type:]name")에 이 유형의 값이 포함되어 있습니다.

이것은 전역 특성 리소스 기호 그리기 가능한 패딩에 해당합니다.

android:drawablePadding단추가 둘을 합치도록 충분히 작은 경우에만 텍스트와 그리기 가능한 사이에 패딩 간격을 만듭니다.단추가 결합된 너비(그림 가능한 왼쪽/그림 가능한 오른쪽) 또는 높이(그림 가능한 위쪽/그림 가능한 아래쪽)보다 넓으면 그리기 가능한 패딩은 아무 작업도 수행하지 않습니다.

저도 지금 이것 때문에 힘들어요.제 단추는 꽤 넓고, 아이콘은 단추의 왼쪽 가장자리에 걸려 있고 텍스트는 가운데에 있습니다.현재로서는 포토샵으로 캔버스의 왼쪽 가장자리에 빈 픽셀을 추가하여 드로잉 테이블의 여백에 굽는 것이 유일한 방법입니다.이상적이지도 않고, 실제로 추천되지도 않습니다.그러나 현재로서는 TextView/Button을 재구축하는 것이 제 임시방편의 해결책입니다.

네. 다음과 같이 그리기 가능한 패딩을 사용합니다.

<TextView
        android:id="@+id/tvHeader"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:text="Settings and Contents"
        android:drawableLeft="@drawable/icon_success"
        android:drawablePadding="10dp" />

그리기 가능한 resources.xml을 만듭니다.

<?xml version="1.0" encoding="utf-8"?>
<selector xmlns:android="http://schemas.android.com/apk/res/android">
    <item android:state_checked="true">
        <inset android:drawable="@drawable/small_m" android:insetLeft="10dp" android:insetTop="10dp" />
    </item>
    <item>
        <inset android:drawable="@drawable/small_p" android:insetLeft="10dp" android:insetTop="10dp" />
    </item>
</selector>

android:drawablePadding그리기 가능한 아이콘에 패딩을 주는 가장 쉬운 방법이지만 특정한 한 쪽 패딩을 줄 수 없습니다.paddingRight또는paddingLeft그릴 수 있는 아이콘입니다.그것을 이루기 위해서는 그것을 파고들어야 합니다.그리고 만약 당신이 지원한다면.paddingLeft또는paddingRight로.Edittext그러면 전체에 패딩을 배치할 것입니다.Edittext그림 아이콘과 함께 표시됩니다.

@Bhargav Thanki에 따르면:

android:drawablePadding그리기 가능한 아이콘에 패딩을 주는 가장 쉬운 방법이지만 특정한 한 쪽 패딩을 줄 수 없습니다.paddingRight또는paddingLeft그릴 수 있는 아이콘입니다.그것을 이루기 위해서는 그것을 파고들어야 합니다.그리고 만약 당신이 지원한다면.paddingLeft또는paddingRight로.EditText그러면 전체에 패딩을 배치할 것입니다.EditText그림 아이콘과 함께 표시됩니다.

예:

    <TextView 
        android:layout_width="match_parent"
        android:padding="5dp"
        android:id="@+id/date"
        android:gravity="center|start"
        android:drawableEnd="@drawable/ic_calendar"
        android:background="@drawable/edit_background"
        android:hint="Not Selected"
        android:drawablePadding="10dp"
        android:paddingStart="10dp"
        android:paddingEnd="10dp"
        android:textColor="@color/black"
        android:layout_height="wrap_content"/>

편집 텍스트의 모양을 정의하고 패딩을 지정합니다. 예를 들어

<?xml version="1.0" encoding="utf-8"?>
<shape xmlns:android="http://schemas.android.com/apk/res/android"
    android:shape="rectangle" >
    <padding
        android:left="5dp"
        android:right="5dp"
    />
    <solid android:color="#F6F6F6" />
    <stroke
        android:width="1px"
        android:color="#C3C3C3" />

    <corners
        android:bottomLeftRadius="1dp"
        android:bottomRightRadius="1dp"
        android:topLeftRadius="1dp"
        android:topRightRadius="1dp" />
</shape>

이 셰이프에 정의된 패딩은 그리기 가능한 왼쪽 또는 오른쪽에 패딩을 제공하는 데 도움이 됩니다. --------------------------------------------- 편집 보기에 이 셰이프 적용

 <EditText
            android:id="@+id/example"
            android:layout_width="fill_parent"
            android:layout_height="36dp"
            android:layout_marginLeft="10dp"
            android:layout_marginRight="10dp"
            android:background="@drawable/shape2"
            android:drawableLeft="@drawable/icon1"
            android:drawablePadding="@dimen/txtDrwblPadding"
            android:ems="10"
         />

정의된 모양을 배경으로 사용하면 편집 텍스트에 그리기 가능한 왼쪽에 스타일과 여백을 추가할 수 있습니다.

<TextView
    android:layout_width="wrap_content"
    android:layout_height="32dp"
    android:background="@drawable/a"
    android:drawableLeft="@drawable/concern_black"
    android:gravity="center"
    android:paddingLeft="10dp"
    android:paddingRight="10dp"
    android:drawablePadding="10dp"
    android:text="text"/>

참고: layout_width는 wrap_content여야 하며 paddingLeft paddingRight drawablePadding을 사용하여 갭을 제어합니다.layout_width 값을 지정하면 아이콘과 텍스트 사이에 공백이 있을 것입니다. layout_width에 지정된 값을 지정하면 패딩이 측정됩니다.

저도 제 답을 링에 넣겠습니다.프로그래밍 방식으로 이 작업을 수행하려면 다음을 수행할 수 있습니다.

final Drawable drawable = ContextCompat.getDrawable(getContext(), R.drawable.somedrawable);
final boolean isLTR = ViewCompat.LAYOUT_DIRECTION_LTR == ViewCompat.getLayoutDirection(this);
final int iconInsetPadding = getResources().getDimensionPixelSize(R.dimen.icon_padding);

final Drawable insetDrawable = new InsetDrawable(drawable, isLTR ? 0 : iconInsetPadding, 0, isLTR ? iconInsetPadding : 0, 0);

이렇게 하면 전화기가 LTR 또는 RTL에 있는지 여부에 따라 끝이 왼쪽/오른쪽을 의미하는 드로잉 테이블의 끝에 패딩이 추가됩니다.

삽입 계층 목록을 통해 또 다른 쉬운 솔루션을 달성할 수 있습니다.

레이어드_드로잉 가능한

<?xml version="1.0" encoding="utf-8"?>
<layer-list xmlns:android="http://schemas.android.com/apk/res/android" >
    <item>
        <inset
            android:insetRight="30dp"
            android:drawable="@drawable/ic_air_date">
        </inset>
    </item>
</layer-list>

XML의 단추

<Button
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:drawableLeft="@drawable/layered_drawable"
    android:text="something" />

대신에Button사용하다LinearLayout와 함께ImageView그리고.TextView안에서.다음과 같은 하위 항목에서ImageView그리고.TextView사용하다android:duplicateParentState="true".

단추에 패딩을 사용할 수 있고 그리기 가능한 패딩을 가지고 놀 수 있습니다.

 <Button
    style="@style/botonesMenu"
    android:padding="15dp"
    android:drawablePadding="-15dp"
    android:text="@string/actualizarBD"
    android:textAlignment="gravity"
    android:gravity="center"
    android:layout_row="1"
    android:layout_column="0"
    android:drawableTop="@drawable/actualizar"
    android:id="@+id/btnActualizar"
    android:onClick="actualizarBD" />

Android:paddingLeft="10dp" 또는 Android:paddingBottom="10dp" 또는 Android:paddingRight="10dp" 또는 Android:paddingTop="10dp"와 함께 그리기 가능한 위치에 따라 특정 패딩을 사용할 수 있습니다.

도면층 목록 사용을 고려해야 합니다.

다음과 같은 그리기 가능한 파일을 만들고 ic_calendar.xml로 이름 지정합니다.

<?xml version="1.0" encoding="utf-8"?>
<layer-list xmlns:android="http://schemas.android.com/apk/res/android">
<item>
    <shape android:shape="rectangle">
        <solid android:color="@android:color/transparent"/>
    </shape>
</item>
<item android:right="10dp">
    <bitmap android:gravity="center_vertical|left"
        android:src="@drawable/ic_calendar_16dp"
        android:tint="@color/red"
        />
</item>
</layer-list>

레이아웃 파일에서

<TextView
         android:id="@+id/tvDate"
         android:layout_width="match_parent"
         android:layout_height="wrap_content"
         android:drawableLeft="@drawable/ic_calendar"
         android:textColor="@color/colorGrey"
         android:textSize="14sp" 
    />

사용할 수 있습니다.android:drawableLeft="@drawable/your_icon"왼쪽에 표시할 그리기 테이블을 설정합니다.드로잉 가능한 패딩을 설정하려면 다음을 사용해야 합니다.android:paddingLeft또는android:paddingRight왼쪽/오른쪽 패딩을 각각 설정합니다.

android:paddingRight="10dp"
android:paddingLeft="20dp"
android:drawableRight="@drawable/ic_app_manager"

리메이크 버전:

<?xml version="1.0" encoding="utf-8"?>
<shape
        xmlns:android="http://schemas.android.com/apk/res/android">

    <corners android:radius="40dp"/>

    <solid android:color="@android:color/white"/>

</shape>

로.

<layer-list
        xmlns:android="http://schemas.android.com/apk/res/android">
    <item
            android:right="@dimen/_2dp"
            android:left="@dimen/_2dp"
            android:bottom="@dimen/_2dp"
            android:top="@dimen/_2dp"
            >
        <shape
                xmlns:android="http://schemas.android.com/apk/res/android">

            <corners android:radius="40dp"/>

            <solid android:color="@android:color/white"/>

        </shape>
    </item>

</layer-list>

그리기 가능한 리소스 크기가 고정된 경우 다음과 같이 수행할 수 있습니다.

<Button
    android:background="@drawable/rounded_button_green"
    style="?android:attr/selectableItemBackground"
    android:layout_height="wrap_content"
    app:layout_widthPercent="70%"
    android:drawableRight="@drawable/ic_clear_black_24dp"
    android:paddingRight="10dp"
    android:paddingLeft="34dp"
    tools:text="example" />

여기서 핵심은 다음과 같습니다.

    android:drawableRight="@drawable/ic_clear_black_24dp"
    android:paddingRight="10dp"
    android:paddingLeft="34dp"

즉, 그리기 가능한 리소스의 크기 + 패딩Right가 패딩Left입니다.

이 예에서 결과를 확인할 수 있습니다.

textView.setCompoundDrawablesWithIntrinsicBounds(AppCompatResources.getDrawable(this,drawable),null,null,null);

addressTitleView.setCompoundDrawablePadding();

음의 패딩을 사용하려고 합니다.

예:

android:paddingLeft="-8dp"

언급URL : https://stackoverflow.com/questions/3337371/androiddrawableleft-margin-and-or-padding

반응형