카테고리 보관물: Android

Android

모서리가 둥근 EditText를 만드는 방법은 무엇입니까? 둥글게 만들

EditText모서리가 둥글게 만들 수있는 방법이 있습니까?



답변

CommonsWare가 작성하는 방법보다 쉬운 방법이 있습니다. 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>

그런 다음 background 속성을 edittext_rounded_corners.xml 파일로 설정하십시오.

<EditText  android:id="@+id/editText_name"
      android:background="@drawable/edittext_rounded_corners"/>

답변

이거 한번 해봐,

1. Drawable에서 rounded_edittext.xml 파일을 만듭니다.

    <?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>

2. XML 파일에 EditText의 배경을 적용하십시오.

                <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"/>

3.You는 이렇게 출력을 얻을 것이다


답변

Norfeldt의 답변에 감사드립니다. 내부 그림자 효과를 개선하기 위해 그라디언트를 약간 변경했습니다.

<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>

배경이 밝은 레이아웃에서 멋지게 보입니다 ..


답변

내 생각으로는 이미 모서리가 둥글다.

더 둥글게하려면 다음을 수행해야합니다.

  1. EditText배경 을 구성하는 9 개 패치 PNG 이미지를 모두 복제합니다 (SDK에 있음).
  2. 더 둥근 모서리를 갖도록 각각 수정
  3. StateListDrawable이러한 EditText배경을 하나로 결합하는 XML 리소스를 복제하고 Drawable더 둥근 9 패치 PNG 파일을 가리 키도록 수정하십시오.
  4. 위젯 StateListDrawable의 배경으로 새로운 것을 사용하십시오EditText

답변

모서리만이 전체 끝이 아닌 곡선을 원하도록하려면 아래 코드를 사용하십시오.

<?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>

의 네 각도 만 구부립니다 EditText.


답변

다른 답변에 추가하기 위해 둥근 모서리를 얻는 가장 간단한 해결책은 다음을 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>