Android 사용자 정의 EditText 오른쪽 그림 컨트롤
최근 프로젝트 의 사용자 로그 인 모듈 은 오른쪽 에 그림 이 있 는 EditText 가 필요 합 니 다.그림 은 클릭 효 과 를 설정 할 수 있 기 때문에 자 료 를 찾 아 사용자 정의 EditText 를 만들어 서 나중에 재 활용 하기에 편리 합 니 다.
의 원리
다음은 EditText 를 사용자 정의 하 는 코드 입 니 다.구체 적 으로 어 려 운 점 은 그림 의 클릭 감청 을 실현 하 는 것 입 니 다.구 글 정부 가 아직 까지 EditText 안의 그림 을 직접 실현 하 는 감청 API 를 제시 하지 않 았 기 때 문 입 니 다.제 방법 은 전체 컨트롤 이 OnTouchListener 를 연결 한 다음 에 클릭 이 벤트 를 모니터링 하고 클릭 위치의 X 좌표 가 그림 의 덮어 쓰기 범위 내 에 있 는 지 확인 하 는 것 입 니 다(아래 getCompound Drawables()[2]안의 2 는 EditText 오른쪽 에 있 는 그림 을 대표 하 는 것 입 니 다).만약 에 점 격 이 벤트 를 실행 하 는 것 입 니 다.
package scut.userlogin;
import android.content.Context;
import android.util.AttributeSet;
import android.view.MotionEvent;
import android.view.View;
import android.widget.EditText;
/**
* Created by yany on 2016/7/23.
*/
public class EditText_PassWordDisplay extends EditText implements View.OnTouchListener {
// , EditText
public EditText_PassWordDisplay(Context context) {
super(context);
init();
}
public EditText_PassWordDisplay(Context context, AttributeSet attrs, int defStyle) {
super(context, attrs, defStyle);
init();
}
public EditText_PassWordDisplay(Context context, AttributeSet attrs) {
super(context, attrs);
init();
}
// ,
public void init(){
setOnTouchListener(this);
}
@Override
public boolean onTouch(View v, MotionEvent event) {
// , , ,
if (event.getAction() == MotionEvent.ACTION_UP && this.getCompoundDrawables()[2] != null) {
// X
if (event.getX() > this.getWidth()
- this.getPaddingRight()
- this.getCompoundDrawables()[2].getIntrinsicWidth()) {
//
System.out.println(" ");
MessageShow.ShowToast(getContext(), " ");
}
return false;
}
return false;
}
}
xml 에서 만 이 컨트롤 을 사용 하 십시오.(그림 을 추가 하 십시오.그렇지 않 으 면 일반적인 EditText 에 해당 합 니 다)
<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:paddingBottom="@dimen/activity_vertical_margin"
android:paddingLeft="@dimen/activity_horizontal_margin"
android:paddingRight="@dimen/activity_horizontal_margin"
android:paddingTop="@dimen/activity_vertical_margin"
tools:context="scut.userlogin.RegisterActivity3">
<scut.userlogin.EditText_PassWordDisplay
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:id="@+id/EditText_PasswordRegisterInput"
android:inputType="textPassword"
android:hint=" "
android:drawableRight="@mipmap/ic_launcher"
android:layout_marginTop="50dp" />
</RelativeLayout>
Activity 에 서 는 보통 불 러 오기 만 하면 됩 니 다.
private EditText_PassWordDisplay et_PasswordRegisterInput;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_register3);
init();
}
private void init(){
et_PasswordRegisterInput = (EditText_PassWordDisplay) findViewById(R.id.EditText_PasswordRegisterInput);
}
효 과 를 실현 하려 면 그림 을 클릭 하면 Toast 가 나타 납 니 다:참고 글:
Android 에서 EditText 의 drawableRight 속성 설정 클릭 이벤트
Android 는 EditTex 의 그림 을 감청 합 니 다.
이상 이 바로 본 고의 모든 내용 입 니 다.여러분 의 학습 에 도움 이 되 고 저 희 를 많이 응원 해 주 셨 으 면 좋 겠 습 니 다.
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
Bitrise에서 배포 어플리케이션 설정 테스트하기이 글은 Bitrise 광고 달력의 23일째 글입니다. 자체 또는 당사 등에서 Bitrise 구축 서비스를 사용합니다. 그나저나 며칠 전 Bitrise User Group Meetup #3에서 아래 슬라이드를 발표했...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.