텍스트 편집에서 선 색상을 변경하는 방법
레이아웃 xml 파일에 EditText를 만들고 있습니다.
그러나 텍스트 편집의 색상줄을 홀로에서 빨간색으로 변경하려고 합니다.어떻게 그럴 수 있죠?
이것은 @Jerome Van Der Linden 덕분에 모든 뷰에 사용할 수 있는 최고의 도구이며 무료입니다.
하면 Android Holo Colors Generator와 Android 요소를 수 .EditText
Android 응용프로그램에 사용할 수 있는 고유한 색상의 스피너를 선택할 수 있습니다.필요한 9개의 패치 자산과 관련 XML 그리기 가능 및 스타일을 모두 생성하여 프로젝트에 직접 복사할 수 있습니다.
http://android-holo-colors.com/
업데이트 1
이 도메인은 만료된 것처럼 보이지만 프로젝트는 여기에서 찾을 수 있는 오픈 소스입니다.
https://github.com/jeromevdl/android-holo-colors
먹어봐.
배경에 있는 이 이미지.EditText
android:background="@drawable/textfield_activated"
업데이트 2
21을 할 수 .android:backgroundTint
<EditText
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:hint="Underline color change"
android:backgroundTint="@android:color/holo_red_light" />
업데이트 3 이제 지원이 제공됩니다.AppCompatEditText
참고: 안드로이드 대신 앱:backgroundTint를 사용해야 합니다.
<android.support.v7.widget.AppCompatEditText
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:hint="Underline color change"
app:backgroundTint="@color/blue_gray_light" />
Android X 버전 4 업데이트
<androidx.appcompat.widget.AppCompatEditText
app:backgroundTint="@color/blue_gray_light" />
저는 이전 답변이 마음에 들지 않습니다.가장 좋은 솔루션은 다음을 사용하는 것입니다.
<android.support.v7.widget.AppCompatEditText
app:backgroundTint="@color/blue_gray_light" />
android:backgroundTint
위해서EditText
API21+에서만 작동합니다. 그것 때문에 우리는 지원 라이브러리를 사용해야 합니다.AppCompatEditText
.
는 참고: 사야합니다를 사용해야 .app:backgroundTint
에 android:backgroundTint
안드로이드 X 버전
<androidx.appcompat.widget.AppCompatEditText
app:backgroundTint="@color/blue_gray_light" />
편집을 빠르게 변경할 수도 있습니다.편집 텍스트의 배경을 다음과 같이 색조로 표시하여 텍스트의 밑줄 색상을 표시합니다.
<EditText
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:hint="Something or Other"
android:backgroundTint="@android:color/holo_green_light" />
21 이하의 API의 경우, 당신은 다음에서 테마 속성을 사용할 수 있습니다.EditText
를 스타일 .
<style name="MyEditTextTheme">
<item name="colorControlNormal">#FFFFFF</item>
<item name="colorControlActivated">#FFFFFF</item>
<item name="colorControlHighlight">#FFFFFF</item>
</style>
이 스타일을 사용합니다.EditText
~하듯이
<EditText
android:id="@+id/etPassword"
android:layout_width="match_parent"
android:layout_height="@dimen/user_input_field_height"
android:layout_marginTop="40dp"
android:hint="@string/password_hint"
android:theme="@style/MyEditTextTheme"
android:singleLine="true" />
프로그래밍 방식으로 다음을 시도할 수 있습니다.
editText.getBackground().mutate().setColorFilter(getResources().getColor(android.R.color.holo_red_light), PorterDuff.Mode.SRC_ATOP);
매우 간단합니다(필수:최소 API 21)...
- xml로 이동하여 텍스트 편집 필드를 선택합니다.
- 오른쪽에서 '속성' 창을 볼 수 있습니다.'모든 속성 보기'를 선택합니다.
- 그냥 'tint'를 검색하세요.
- 그리고 '배경 추가/변경원하는 색상의 16진수에 '색상'(예: #FF0000)
계속 코딩합니다...... :)
다음 코드 줄을 사용하여 프로그래밍 방식으로 텍스트 편집 색상을 변경할 수 있습니다.edittext.setBackgroundTintList(ColorStateList.valueOf(yourcolor));
제 생각에 가장 좋은 방법은 주제별입니다.
<style name="MyEditTextTheme" parent="Theme.AppCompat.Light.DarkActionBar">
<item name="colorControlNormal">@color/black</item>
<item name="colorControlActivated">@color/action_blue</item>
<item name="colorControlHighlight">@color/action_blue</item>
</style>
<style name="AddressBookStyle" parent="Theme.AppCompat.Light.DarkActionBar">
<item name="android:layout_width">match_parent</item>
<item name="android:layout_height">wrap_content</item>
<item name="android:textSize">13sp</item>
<item name="android:theme">@style/MyEditTextTheme</item>
</style>
<android.support.v7.widget.AppCompatEditText
style="@style/AddressBookStyle"/>
편집 텍스트의 밑줄 색상을 변경하는 방법
전체 앱이 이 스타일을 공유하도록 하려면 다음과 같은 방법을 사용할 수 있습니다.
styles.xml 파일로 이동합니다.테마의 부모를 상속하는 앱테마.AppCompat.Light.DarkActionBar(나의 경우)는 앱에 있는 모든 스타일 파일의 기본 부모가 됩니다.이름을 "AppBase"로 변경합니다.테마'.AppTheme의 이름을 가지고 AppBase에서 상속받은 다른 스타일을 바로 아래에 만듭니다.방금 편집한 테마입니다.다음과 같이 표시됩니다.
<!-- Base application theme. -->
<style name="AppBaseTheme" parent="Theme.AppCompat.Light.DarkActionBar">
<!-- Customize your theme here. -->
<item name="windowActionBar">false</item>
<!--see http://www.google.com/design/spec/style/color.html#color-color-palette-->
<item name="colorPrimary">@color/material_brown_500</item>
<item name="colorPrimaryDark">@color/material_brown_700</item>
<item name="colorAccent">@color/flamingo</item>
<style name="AppTheme" parent="AppBaseTheme">
<!-- Customize your theme here. -->
</style>
그런 다음 "color Accent"를 편집 텍스트 줄 색상으로 변경합니다.
style.xml이 있는 다른 값 폴더가 있는 경우 이 단계는 매우 중요합니다.이 파일은 이전 상위 xml 파일에서 상속되기 때문입니다.예를 들어 values-19/styles.xml이 있습니다.이것은 특별히 킷캣 이상을 위한 것입니다.상위 항목을 AppBase로 변경합니다.부모의 색을 덮어쓰지 않도록 테마를 지정하고 "colorAccent"를 제거합니다.또한 버전 19와 관련된 항목을 유지해야 합니다.그러면 이렇게 됩니다.
<resources>
<!-- Base application theme. -->
<style name="AppTheme" parent="AppBaseTheme">
<item name="android:windowTranslucentStatus">true</item>
</style>
</resources>
선의색다같정이의다니됩음과은상다니'▁is▁by▁the됩의로 정의됩니다.EditText
의 배경 속성.을 .android:background
레이아웃 파일에 있습니다.
이 스타일은 9-patch drawable을 사용하여 구현됩니다. SDK의 을 알 수 .EditText
다음 이미지입니다.
이미지를 변경하려면 이미지 조작 프로그램에서 열고 원하는 색상으로 색을 칠할 수 있습니다.으로 합니다.bg_edit_text.9.png
그리고 그릴 수 있는 폴더에 넣습니다.이제 당신은 그것을 당신의 배경으로 적용할 수 있습니다.EditText
예:
android:background="@drawable/bg_edit_text"
drawable/bg_edittext.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:left="-2dp"
android:right="-2dp"
android:top="-2dp">
<shape>
<solid android:color="@android:color/transparent" />
<stroke
android:width="1dp"
android:color="@color/colorDivider" />
</shape>
</item>
</layer-list>
텍스트 편집으로 설정
<android.support.v7.widget.AppCompatEditText
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:background="@drawable/bg_edittext"/>
위젯의 배경은 API 수준에 따라 다릅니다.
대안 1
사용자 지정 이미지를 사용자 지정에 제공할 수 있습니다.EditText
에 의한 배경.
android:background="@drawable/custom_editText"
당신의 이미지는 이렇게 보여야 합니다.그것은 당신에게 원하는 효과를 줄 것입니다.
대안 2
을 xml로 설정합니다.EditText
백그라운드 속성.
<?xml version="1.0" encoding="utf-8"?>
<shape xmlns:android="http://schemas.android.com/apk/res/android"
android:shape="rectangle" android:padding="10dp">
<solid android:color="#4C000000"/>
<corners android:bottomRightRadius="5dp"
android:bottomLeftRadius="5dp"
android:topLeftRadius="5dp"
android:topRightRadius="5dp"/>
</shape>
은 당신의 ▁look▁same▁of다와 같은 모양과 느낌을 가질 것입니다.EditText
모든 API에서.
을 입혀서 수 . <EditText android:backgroundTint="@color/red"/>
xml 레이아웃에서 사용:
android:backgroundTint="@color/colorPrimary"
또는 Java 코드에서 이 방법을 복사합니다.
public void changeLineColorInEditText(EditText editText, int color) {
editText.setBackgroundTintList(ColorStateList.valueOf(color));
}
다음과 같이 사용합니다.
changeLineColorInEditText(editText, getResources().getColor(R.color.colorPrimary));
이 방법을 사용합니다.보기 이름에 따라 수정합니다.이 코드는 잘 작동합니다.
private boolean validateMobilenumber() {
if (mobilenumber.getText().toString().trim().isEmpty() || mobilenumber.getText().toString().length() < 10) {
input_layout_mobilenumber.setErrorEnabled(true);
input_layout_mobilenumber.setError(getString(R.string.err_msg_mobilenumber));
// requestFocus(mobilenumber);
return false;
} else {
input_layout_mobilenumber.setError(null);
input_layout_mobilenumber.setErrorEnabled(false);
mobilenumber.setBackground(mobilenumber.getBackground().getConstantState().newDrawable());
}
평평한 선을 원하는 경우 xml로 쉽게 할 수 있습니다.다음은 xml 예제입니다.
<layer-list xmlns:android="http://schemas.android.com/apk/res/android">
<item
android:top="-1dp"
android:left="-1dp"
android:right="-1dp"
android:bottom="1dp"
>
<shape android:shape="rectangle">
<stroke android:width="1dp" android:color="#6A9A3A"/>
</shape>
</item>
</layer-list>
초점 편집 텍스트에 대해 다른 너비와 색상을 제공하려면 모양을 선택기로 바꿉니다.
은 가장좋방다같습다니음과법은을 하는 것입니다.AppCompatEditText
와 함께backgroundTint
의 app
네임스페이스.
<android.support.v7.widget.AppCompatEditText
android:layout_width="match_parent"
app:backgroundTint="YOUR COLOR"
android:layout_height="wrap_content" />
가 때할용을 할 때.android:backgroundTint
그 에서만 작동하지만 API21에서 사용할 수 .app:backgroundTint
모든 API 수준에서 작동합니다.
텍스트 편집을 위한 사용자 정의 클래스가 있는 경우 동적으로 수행할 수 있습니다.
먼저 아래에 제시된 편집 텍스트의 상태와 색상을 선언합니다.
int[][] states = new int[][]{
new int[]{-android.R.attr.state_focused}, // enabled
new int[]{android.R.attr.state_focused}, // disabled
};
int[] colors = new int[]{
secondaryColor,
primaryColor,
};
그런 다음 해당 항목을 사용하여 ColorStateList 변수를 만듭니다.
ColorStateList myList = new ColorStateList(states, colors);
그런 다음 마지막 단계는 텍스트 편집에 할당하는 것입니다.
editText.setBackgroundTintList(myList);
이 후에는 집중적인 변화 이벤트에 대해 작성해야 합니다.
this.setOnFocusChangeListener(new OnFocusChangeListener() {
@Override
public void onFocusChange(View view, boolean b) {
setUnderlineColor(selectionColor,deselectionColor);
}
});
그리고 당신은 세트 언더라인클러() 메소드 안에 위의 코드를 만들 수 있습니다.
private void setUnderlineColor(int primaryColor, int secondaryColor) {
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.LOLLIPOP) {
int[][] states = new int[][]{
new int[]{-android.R.attr.state_focused}, // enabled
new int[]{android.R.attr.state_focused}, // disabled
};
int[] colors = new int[]{
secondaryColor,
primaryColor,
};
ColorStateList myList = new ColorStateList(states, colors);
setBackgroundTintList(myList);
}
}
해당 편집 텍스트에 Android:background 속성을 사용합니다.그리기 가능한 폴더 이미지를 전달합니다.예를들면,
android:background="@drawable/abc.png"
<EditText
android:id="@+id/et_password_tlay"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:hint="Password"
android:textColorHint="#9e9e9e"
android:backgroundTint="#000"
android:singleLine="true"
android:drawableTint="#FF4081"
android:paddingTop="25dp"
android:textColor="#000"
android:paddingBottom="5dp"
android:inputType="textPassword"/>
<View
android:id="@+id/UnderLine"
android:layout_width="match_parent"
android:layout_height="1dp"
android:layout_below="@+id/et_password_tlay"
android:layout_centerHorizontal="true"
android:background="#03f94e" />
**뷰로 하는 것 중 하나 **
다음 방법으로 시도해 보십시오. 배경 속성으로 사용될 때 텍스트 편집의 맨 아래 줄 색상이 변환됩니다.
<?xml version="1.0" encoding="utf-8"?>
<layer-list xmlns:android="http://schemas.android.com/apk/res/android">
<item
android:left="@dimen/spacing_neg"
android:right="@dimen/spacing_neg"
android:top="@dimen/spacing_neg">
<shape>
<solid android:color="@android:color/transparent" />
<stroke
android:width="@dimen/spacing_1"
android:color="@android:color/black" />
</shape>
</item>
</layer-list>
이 작업은 다음을 포함하여 간단히 수행할 수 있습니다.android:theme="@style/AppTheme.AppBarOverlay
editText의 속성으로 사용하고 추가합니다.<style name="AppTheme.AppBarOverlay" parent="ThemeOverlay.AppCompat.Dark.ActionBar" />
당신의 스타일에 맞게
언급URL : https://stackoverflow.com/questions/24677414/how-to-change-line-color-in-edittext
'programing' 카테고리의 다른 글
외부 키 참조를 업데이트하지 않고 InnoDB 테이블의 이름을 변경하시겠습니까? (0) | 2023.08.30 |
---|---|
jQuery Ajax 게시 요청이 Chrome에서 보류 중인 상태로 고착 (0) | 2023.08.30 |
GIT: 특정 폴더로 체크아웃 (0) | 2023.08.30 |
두 개의 제출 단추와 함께 jQuery agax 양식 제출 (0) | 2023.08.30 |
AsyncTask가 별도의 클래스이기 때문에 OnPostExecute()의 결과를 주 활동으로 가져오는 방법은 무엇입니까? (0) | 2023.08.30 |