검색결과 리스트
글
Android 입문자를 위한 Tutorial - 6. 커스텀 위젯
Mobile Programming/Android
2010. 11. 9. 14:46
위젯을 사용자가 정의하고 이를 사용한다.
package geng.mm.jnu; import android.app.Activity; import android.content.Context; import android.os.Bundle; import android.text.Editable; import android.text.TextWatcher; import android.util.AttributeSet; import android.widget.EditText; import android.widget.LinearLayout; import android.widget.TextView; public class ch9 extends Activity { /** Called when the activity is first created. */ @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.main); } } class Editlength extends LinearLayout implements TextWatcher{ EditText mEdit; TextView mText; public Editlength(Context context) { super(context); init(); } public Editlength(Context context,AttributeSet attrs) { super(context,attrs); init(); } void init() { setOrientation(LinearLayout.VERTICAL); mEdit = new EditText(getContext()); mText = new TextView(getContext()); mText.setText("Now Length : 0 Char"); LinearLayout.LayoutParams params = new LinearLayout.LayoutParams( LayoutParams.FILL_PARENT, LayoutParams.WRAP_CONTENT); addView(mEdit,params); addView(mText,params); mEdit.addTextChangedListener(this); } @Override public void afterTextChanged(Editable arg0) { // TODO Auto-generated method stub } @Override public void beforeTextChanged(CharSequence s, int start, int count, int after) { // TODO Auto-generated method stub } @Override public void onTextChanged(CharSequence s, int start, int before, int count) { // TODO Auto-generated method stub mText.setText("Now Length : " + s.length() + "Characters"); } } class EditEcho extends LinearLayout implements TextWatcher{ EditText mEdit; TextView mText; public EditEcho(Context context) { super(context); // TODO Auto-generated constructor stub init(); } public EditEcho(Context context,AttributeSet attrs) { super(context,attrs); init(); } void init() { setOrientation(LinearLayout.VERTICAL); mEdit = new EditText(getContext()); mText = new TextView(getContext()); mText.setText("Now Length : 0 Char"); LinearLayout.LayoutParams params = new LinearLayout.LayoutParams( LayoutParams.FILL_PARENT, LayoutParams.WRAP_CONTENT); addView(mEdit,params); addView(mText,params); mEdit.addTextChangedListener(this); } @Override public void afterTextChanged(Editable s) { // TODO Auto-generated method stub } @Override public void beforeTextChanged(CharSequence s, int start, int count, int after) { // TODO Auto-generated method stub } @Override public void onTextChanged(CharSequence s, int start, int before, int count) { // TODO Auto-generated method stub mText.setText("Now Length : " + s + "Characters"); } }
외부 클래스로 만들고자 하는 위젯을 만들어야 한다.
본 예제에서의 위젯은 리니어 레이아웃을 기반으로한 텍스트뷰 위젯이므로 먼저 linearlayout을 상속하고, 위젯이 사용해야하는 두 생성자를 사용, 그리고 초기화 함수를 호출하여 위젯을 구성한다.
두 리니어 레이아웃 모두 텍스트 에디트 + 텍스트뷰이기 때문에 init함수에서 에디트와 텍스트뷰를 add하고 있다.
Text뷰의 변화 감지를위해 addTextChangedLister를 호출하고,
역시 implements 되어있기 때문에 현재 클래스에서 찾을 수 있도록 (this)를 넘겨주었다.
'Mobile Programming > Android' 카테고리의 다른 글
Local Service를 이용해보자! (0) | 2011.01.18 |
---|---|
Android 입문자를 위한 Tutorial - 7. 탭뷰의 이용 (0) | 2010.11.10 |
Android 입문자를 위한 Tutorial - 5. ArrayList (0) | 2010.11.04 |
Android 입문자를 위한 Tutorial - 4. 라디오 버튼 (2) | 2010.10.21 |
Android 입문자를 위한 Tutorial - 3. Layout (0) | 2010.09.28 |