Android 버튼 개체 내에서 텍스트 주변의 안쪽 여백을 줄이려면 어떻게해야합니까?


91

버튼 예

그래서 지금은 위의 첫 번째 이미지와 같은 버튼이 있습니다. 버튼 자체 내부의 텍스트 주변 여백을 줄이려면 어떻게해야합니까 (두 번째 이미지처럼 보이기 위해)?

레이아웃 너비 및 높이는 다음과 같이 설정됩니다.

android:layout_width="match_parent"
android:layout_height="wrap_content"

사용자 정의 스타일 모양에는 매개 변수가 있습니다. "

<shape xmlns:android="http://schemas.android.com/apk/res/android"
android:shape="rectangle" android:padding="10dp">

나머지는 색상 속성과 반경 값입니다.

명확하게하기 위해 버튼의 프레임이 "로그인"텍스트를 더 가깝게 감싸고 싶습니다.

모든 도움과 피드백에 감사드립니다. 감사.


1
android : padding = "10dp 10dp를 5dp로 줄이기
Raghunandan

이는 Button의 외부 패딩과 관련이 있습니다. "로그인"과 그 컨테이너의 내부 패딩을 언급하고 있습니다. 그래도 고마워.
Imran NZ

-이 날 도움이 stackoverflow.com/a/19227057/3325759 대답에서 - (@StinePike 저자) - 추가android:includeFontPadding="false"
미켈 Kaneps

패딩을 재정의하는 것이 저에게 효과적입니다. textView.setPadding (0,0,0,0);
M. Usman Khan

2
버튼에 android : minHeight = "0dp"android : minWidth = "0dp"를 입력합니다. 이 작업을해야 ...
독사

답변:


234

이것을 찾는 데 영원히 걸렸지 만 버튼의 텍스트 주위의 "패딩"은 실제로 패딩이 아닙니다. 기본 Widget.Button 스타일에는 minHeight 속성이 포함됩니다. 버튼의 minHeight를 변경하면 예상대로 패딩을 조정할 수 있습니다.

<Button
        android:id="@+id/header"
        android:layout_width="fill_parent"
        android:layout_height="wrap_content"
        android:text="@string/test"
        android:textColor="@color/black"
        android:minHeight="40dip"/>


<style name="Widget.Holo.Button" parent="Widget.Button">
    <item name="android:background">@android:drawable/btn_default_holo_dark</item>
    <item name="android:textAppearance">?android:attr/textAppearanceMedium</item>
    <item name="android:textColor">@android:color/primary_text_holo_dark</item>
    <item name="android:minHeight">48dip</item>
    <item name="android:minWidth">64dip</item>
</style>

6
너비와 비슷한 문제에 직면했습니다. android : minWidth = "0dp"설정은 작동했지만 긴 텍스트가있는 버튼에서 잘못된 레이아웃을 방지하기 위해 android : paddingRight 및 android : paddingLeft를 설정해야했습니다.
사이먼 페더

내 Widget.Button에 minHeight (sdk28)가 없습니다
ror

속성은 상위 "Widget.Button"이 아니라 테마 버튼에 있습니다. "holo"와 다른 테마를 사용하는 경우 다른 위치에있을 수 있습니다. 다음은 "holo" android.googlesource.com/platform/frameworks/base
Steven

4

사용자 정의 shape.xml 파일에서 이것을 시도하십시오.

<shape xmlns:android="http://schemas.android.com/apk/res/android"
android:shape="rectangle"
android:paddingLeft="10dp"
android:paddingRight="10dp"
android:paddingTop="1dp"
android:padding="1dp">

또한 버튼의 xml을 변경할 수 있습니다.

android:layout_width="wrap_content"
android:layout_height="wrap_content"

2
원래 질문은 물어 무엇 읽으면이 전혀 작동하지 않습니다
제레미

2

재료 구성 요소 라이브러리에서에는 및 값 MaterialButton이있는 기본 스타일 이 있습니다.insetBottominsetTop6dp

레이아웃에서 변경할 수 있습니다.

  <com.google.android.material.button.MaterialButton
      android:insetTop="0dp"
      android:insetBottom="0dp"
      ../>

또는 스타일 :

 <style name="Button_no_insets" parent="Widget.MaterialComponents.Button"..>
    <item name="android:insetTop">0dp</item>
    <item name="android:insetBottom">0dp</item>
 </style>

여기에 이미지 설명 입력여기에 이미지 설명 입력


1

더 작은 상단 및 하단 패딩을 원한다면 다음을 사용하십시오.

 android:paddingTop="2dp"
 android:paddingBottom="2dp"

그것은 버튼 외부의 패딩을위한 것입니다. 내가 추구하는 효과는 버튼 프레임이 "로그인"텍스트를 더 가깝게 감싸도록하는 것입니다. 감사.
Imran NZ

1
그것은 이미 버튼의 안쪽 여백입니다. 의 상위 뷰에 android:padding또는 같은 줄을 추가했는지 확인해야 할 수도 있습니다 . android:layout_margin"<shape />
Neoh

0

아래와 같이 AppCompatButton 에서 Borderless 스타일을 사용할 수 있습니다 . 또한 원하는 배경색을 사용하십시오.

Widget.AppCompat.Button.Borderless.Colored

버튼 코드

<androidx.appcompat.widget.AppCompatButton
        android:id="@+id/button_visa_next"
        android:background="@color/colorPrimary"
        style="@style/Widget.AppCompat.Button.Borderless.Colored"
        android:layout_width="0dp"
        android:layout_height="wrap_content"
        android:layout_marginTop="@dimen/spacing_normal"
        android:text="@string/next"
        android:textColor="@color/white"
        app:layout_constraintBottom_toBottomOf="parent"
        app:layout_constraintEnd_toEndOf="parent"
        app:layout_constraintStart_toStartOf="parent" />

산출:

여기에 이미지 설명 입력

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.