모서리가 둥근 편집 텍스트를 만드는 방법은 무엇입니까?
생성 방법EditText
기본 직사각형 모양의 모서리 대신 둥근 모서리를 가진 것?
커먼즈웨어가 작성한 것보다 쉬운 방법이 있습니다.다음 방법을 지정하는 그리기 가능한 리소스를 생성하십시오.EditText
그려집니다.
<?xml version="1.0" encoding="utf-8"?>
<!-- res/drawable/rounded_edittext.xml -->
<shape xmlns:android="http://schemas.android.com/apk/res/android"
android:shape="rectangle"
android:padding="10dp">
<solid android:color="#FFFFFF" />
<corners
android:bottomRightRadius="15dp"
android:bottomLeftRadius="15dp"
android:topLeftRadius="15dp"
android:topRightRadius="15dp" />
</shape>
그런 다음 레이아웃에서 다음 그림을 참조하십시오.
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:orientation="vertical"
android:layout_width="fill_parent"
android:layout_height="fill_parent">
<EditText
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:padding="5dip"
android:background="@drawable/rounded_edittext" />
</LinearLayout>
다음과 같은 이점을 얻을 수 있습니다.
편집
Mark의 의견을 바탕으로 다른 상태를 생성할 수 있는 방법을 추가하고 싶습니다.EditText
:
<?xml version="1.0" encoding="utf-8"?>
<!-- res/drawable/rounded_edittext_states.xml -->
<selector xmlns:android="http://schemas.android.com/apk/res/android">
<item
android:state_pressed="true"
android:state_enabled="true"
android:drawable="@drawable/rounded_focused" />
<item
android:state_focused="true"
android:state_enabled="true"
android:drawable="@drawable/rounded_focused" />
<item
android:state_enabled="true"
android:drawable="@drawable/rounded_edittext" />
</selector>
상태는 다음과 같습니다.
<?xml version="1.0" encoding="utf-8"?>
<!-- res/drawable/rounded_edittext_focused.xml -->
<shape xmlns:android="http://schemas.android.com/apk/res/android"
android:shape="rectangle" android:padding="10dp">
<solid android:color="#FFFFFF"/>
<stroke android:width="2dp" android:color="#FF0000" />
<corners
android:bottomRightRadius="15dp"
android:bottomLeftRadius="15dp"
android:topLeftRadius="15dp"
android:topRightRadius="15dp" />
</shape>
그리고... 이제...EditText
다음과 같아야 합니다.
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:orientation="vertical"
android:layout_width="fill_parent"
android:layout_height="fill_parent">
<EditText
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:text="@string/hello"
android:background="@drawable/rounded_edittext_states"
android:padding="5dip" />
</LinearLayout>
다음은 XML 파일 하나에 동일한 솔루션(추가 보너스 코드 포함)입니다.
<?xml version="1.0" encoding="utf-8"?>
<!-- res/drawable/edittext_rounded_corners.xml -->
<selector xmlns:android="http://schemas.android.com/apk/res/android">
<item android:state_pressed="true" android:state_focused="true">
<shape>
<solid android:color="#FF8000"/>
<stroke
android:width="2.3dp"
android:color="#FF8000" />
<corners
android:radius="15dp" />
</shape>
</item>
<item android:state_pressed="true" android:state_focused="false">
<shape>
<solid android:color="#FF8000"/>
<stroke
android:width="2.3dp"
android:color="#FF8000" />
<corners
android:radius="15dp" />
</shape>
</item>
<item android:state_pressed="false" android:state_focused="true">
<shape>
<solid android:color="#FFFFFF"/>
<stroke
android:width="2.3dp"
android:color="#FF8000" />
<corners
android:radius="15dp" />
</shape>
</item>
<item android:state_pressed="false" android:state_focused="false">
<shape>
<gradient
android:startColor="#F2F2F2"
android:centerColor="#FFFFFF"
android:endColor="#FFFFFF"
android:angle="270"
/>
<stroke
android:width="0.7dp"
android:color="#BDBDBD" />
<corners
android:radius="15dp" />
</shape>
</item>
<item android:state_enabled="true">
<shape>
<padding
android:left="4dp"
android:top="4dp"
android:right="4dp"
android:bottom="4dp"
/>
</shape>
</item>
</selector>
그런 다음 배경 특성을 설정하여 text_rounded_corners.xml 파일을 편집합니다.
<EditText android:id="@+id/editText_name"
android:background="@drawable/edittext_rounded_corners"/>
이거 드셔보세요.
만들다
rounded_edittext.xml
Drawable에 파일 넣기<?xml version="1.0" encoding="utf-8"?> <shape xmlns:android="http://schemas.android.com/apk/res/android" android:shape="rectangle" android:padding="15dp"> <solid android:color="#FFFFFF" /> <corners android:bottomRightRadius="0dp" android:bottomLeftRadius="0dp" android:topLeftRadius="0dp" android:topRightRadius="0dp" /> <stroke android:width="1dip" android:color="#f06060" /> </shape>
에 대한 배경 적용
EditText
xml 파일로<EditText android:id="@+id/edit_expiry_date" android:layout_width="match_parent" android:layout_height="wrap_content" android:padding="10dip" android:background="@drawable/rounded_edittext" android:hint="@string/shop_name" android:inputType="text" />
다음과 같이 출력됩니다.
노펠트의 답변에 감사드립니다.내부 섀도우 효과를 개선하기 위해 그라데이션을 살짝 변경하였습니다.
<item android:state_pressed="false" android:state_focused="false">
<shape>
<gradient
android:centerY="0.2"
android:startColor="#D3D3D3"
android:centerColor="#65FFFFFF"
android:endColor="#00FFFFFF"
android:angle="270"
/>
<stroke
android:width="0.7dp"
android:color="#BDBDBD" />
<corners
android:radius="15dp" />
</shape>
</item>
밝은 배경 배치가 잘 어울립니다.
제 생각에는, 그것은 이미 둥근 모서리를 가지고 있습니다.
더 반올림하려면 다음 작업을 수행해야 합니다.
- 다음을 구성하는 9개 패치의 PNG 이미지를 모두 복제합니다.
EditText
배경(SDK에서 찾을 수 있음 - 모서리가 더 둥글도록 각각 수정
- XML 복제
StateListDrawable
그것들을 결합한 자원EditText
싱글로 된 배경Drawable
좀 더 둥근 9개 패치의 PNG 파일을 가리키도록 수정합니다. - 해당 새 항목 사용
StateListDrawable
의 배경으로EditText
위젯
다른 답변을 덧붙이자면, 둥근 모서리를 달성하는 가장 간단한 해결책은 편집 텍스트의 배경으로 다음을 설정하는 것이었습니다.
<?xml version="1.0" encoding="utf-8"?>
<shape xmlns:android="http://schemas.android.com/apk/res/android">
<solid android:color="@android:color/white"/>
<corners android:radius="8dp"/>
</shape>
재료 구성요소 라이브러리를 사용하여 사용자 정의 모양을 그릴 수 있습니다.
를 사용하면 다음을 수행할 수 있습니다.
<EditText
android:id="@+id/edittext"
../>
그런 다음 다음MaterialShapeDrawable
:
float radius = getResources().getDimension(R.dimen.default_corner_radius);
EditText editText = findViewById(R.id.edittext);
//Apply the rounded corners
ShapeAppearanceModel shapeAppearanceModel = new ShapeAppearanceModel()
.toBuilder()
.setAllCorners(CornerFamily.ROUNDED,radius)
.build();
MaterialShapeDrawable shapeDrawable =
new MaterialShapeDrawable(shapeAppearanceModel);
//Apply a background color
shapeDrawable.setFillColor(ContextCompat.getColorStateList(this,R.color.white));
//Apply a stroke
shapeDrawable.setStroke(2.0f, ContextCompat.getColor(this,R.color.colorAccent));
ViewCompat.setBackground(editText,shapeDrawable);
라이브러리 버전 1.1.0이 필요합니다.
모서리만 전체가 아닌 곡선을 그리려면 아래 코드를 사용합니다.
<?xml version="1.0" encoding="utf-8"?>
<shape xmlns:android="http://schemas.android.com/apk/res/android" >
<corners android:radius="10dp" />
<padding
android:bottom="3dp"
android:left="0dp"
android:right="0dp"
android:top="3dp" />
<gradient
android:angle="90"
android:endColor="@color/White"
android:startColor="@color/White" />
<stroke
android:width="1dp"
android:color="@color/Gray" />
</shape>
4각만 곡선을 그리게 됩니다.EditText
.
언급URL : https://stackoverflow.com/questions/3646415/how-to-create-edittext-with-rounded-corners
'programing' 카테고리의 다른 글
환경 기반 Spring 데이터 소스 (0) | 2023.07.29 |
---|---|
Spring REST API에서의 Json 스키마 검증 (0) | 2023.07.29 |
오라클에서 날짜로부터 월 및 연도 추출 (0) | 2023.07.29 |
jQuery 날짜 형식 지정 (0) | 2023.07.29 |
상위 컨테이너를 기준으로 요소의 위치/오프셋을 가져오시겠습니까? (0) | 2023.07.29 |