Android : 매번 별도의 드로어 블을 만들지 않고도 뷰의 둥근 모서리를 만드는 간단한 방법이 있습니까?

Harsha

인터넷에서 다양한 솔루션을 통해 모서리가 둥근 뷰를 만들 수 있습니다. 대부분은 사용자 지정 뷰를 생성하거나 둥근 모서리 뷰가 필요할 때마다 xml 또는 나인 패치로 드로어 블을 생성해야합니다.

문제는 이러한 뷰를 구현할 때 두 뷰에 공통된 배경색 만 있지만 모든 것이 포함되어 있어도 모든 뷰에 대해 드로어 블을 만들어야한다는 것입니다. 이것은 나에게 일종의 짜증나는 일이며 iOS 프레임 워크가 둥근 모서리 뷰를 만드는 좋은 방법을 제공한다고 들었습니다. 어떤 도움이라도 대단히 감사하겠습니다.

편집 : 둥근 모서리와 함께보기 및 그림자의 누르기 효과도 사용되는 일반적인 스타일 중 하나입니다. 솔루션에 이러한 효과가 포함되도록하십시오.

가브리엘 마리오 티

Material Components Library를 사용 하면를 사용하여 사용자 정의 모양MaterialShapeDrawable그릴 수 있습니다 .

예를 들어 TextView다음을 수행 할 수 있습니다.

    <TextView
        android:id="@+id/textview"
        android:backgroundTint="@color/secondaryColor"
        ../>

그런 다음 다음을 만듭니다 MaterialShapeDrawable.

float radius = getResources().getDimension(R.dimen.default_corner_radius);

TextView textView = findViewById(R.id.textview);
ShapeAppearanceModel shapeAppearanceModel = new ShapeAppearanceModel()
        .toBuilder()
        .setAllCorners(CornerFamily.ROUNDED,radius)
        .build();

MaterialShapeDrawable shapeDrawable = new MaterialShapeDrawable(shapeAppearanceModel);
ViewCompat.setBackground(textView,shapeDrawable);

여기에 이미지 설명 입력

간단하게 View:

<View
    android:id="@+id/line"
    android:layout_width="match_parent"
    android:layout_height="4dp"
    android:backgroundTint="@color/..."/>

그런 다음 동일하게 적용하십시오 MaterialShapeDrawable.

View line = findViewById(R.id.line);
ViewCompat.setBackground(line,shapeDrawable);

여기에 이미지 설명 입력

다른 모서리를 만들 수도 있습니다.

ShapeAppearanceModel shapeAppearanceModel = new ShapeAppearanceModel()
    .toBuilder()
    .setAllCorners(CornerFamily.ROUNDED,0)
    .setBottomRightCorner(CornerFamily.ROUNDED,radius)
    .build();

여기에 이미지 설명 입력

또한 재질 구성 요소 라이브러리 에서 제공하는 대부분의 구성 요소 에는 배경으로 MaterialShapeDrawable이 있습니다.
이러한 경우에는 (이 예제에서는 MaterialCardView)와 같은 것을 사용하십시오.

  MaterialCardView cardView = findViewById(R.id.card);
  cardView.setShapeAppearanceModel(cardView.getShapeAppearanceModel()
        .toBuilder()
        .setBottomLeftCornerSize(...)
        .setBottomEdge(...)
        .build());

1.1.0 버전 의 라이브러리 가 필요합니다 . 현재 1.1.0-beta02.

이 기사는 인터넷에서 수집됩니다. 재 인쇄 할 때 출처를 알려주십시오.

침해가 발생한 경우 연락 주시기 바랍니다[email protected] 삭제

에서 수정
0

몇 마디 만하겠습니다

0리뷰
로그인참여 후 검토

관련 기사

Related 관련 기사

뜨겁다태그

보관