ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • TextView를 EditText처럼 만들어서 사용하기.....
    과거...../개발일지 2010. 8. 1. 23:23

    정말 오랜 삽질끝에...(약3일)......알아내었다...한줄의 코드를................ㅜㅜ

    수많은 구글링과 네이버를 오가면서.........얻을 수있는 힌트는 약간은 오래된 코드라 적용이 안되었다. 힌트중 가장 볼만 했던 것은....

     출처 : http://learnandroid.blogspot.com/2008/02/changing-textview-to-receive-user-input.html

    제목
    TextView behave like EditText

     

    TextView is the ancestor of EditText component. I've try to make TextView from XML design screen to receive input from user still is unsuccessful. But Programatically, i can change the TextView able to receive user input.


    To do this, just create activity folder with activitycreator and modify the main activity class, say we have Sample Class below:

    public class SampleTextView extends Activity
    {
    /** Called with the activity is first created. */
    @Override
    public void onCreate(Bundle icicle)
    {
    super.onCreate(icicle);
    LayoutParams params = new LayoutParams(
    LayoutParams.WRAP_CONTENT,
    LayoutParams.WRAP_CONTENT);
    TextView v = new TextView(this);
    v.setLayoutParams(params);
    v.setInputMethod(TextInputMethod.getInstance());
    v.setMovementMethod(ArrowKeyMovementMethod.getInstance());
    v.setFocusable(true);
    v.setText("TEST");
    v.setBackgroundColor(0x88FFFF00);
    setContentView(v, params);

    }
    }


    하지만 위의 내용도 파란부분에서 오류나는 것을 확인할 수있다.
    디벨로퍼 사이트에서 뒤지면..저부분 메소드가 사라지고 onKeyListener부분으로 바뀐걸 확인할수있었다.but 그것도
    중요한 내용은 아니었다..
    중요한 메서드는 총 3개
    1. textview01.setFocusableInTouchMode(true);
    2 .textview01.setMovementMethod(ArrowKeyMovementMethod.getInstance());
    3. InputMethodManager imm = (InputMethodManager)getSystemService(Context.INPUT_METHOD_SERVICE);
       imm.showSoftInput(textview01, InputMethodManager.SHOW_FORCED);

    터치와, 커서 조절과, 마지막으로 키보드를 임의로 띄어주는...ㅋㅋ
    밑에 예제소스를 첨부한다. 나같이 3일....삽질하지마시고....그 시간에 딴..코드들을 개발하시기를...............

    딴 분들도...코드..공개를 좀더 해주셨다면..이런 삽질은 안할수있었는데...ㅜㅜ (한명도 안해주었다니....외국인도,,우리나라사람도..미워!!)

     public void onCreate(Bundle savedInstanceState) {
            super.onCreate(savedInstanceState);
            setContentView(R.layout.main);
           
          /*  editTest = (EditTest)findViewById(R.id.abcd);
            myTestView = (MyTestView)findViewById(R.id.bb);*/
           
            textview01 = (TextView)findViewById(R.id.textview01);
            textview01.setFocusable(true);
                   
            textview01.setMovementMethod(ArrowKeyMovementMethod.getInstance());
            textview01.setFocusable(true);
            textview01.setFocusableInTouchMode(true);
         
           
            textview01.setText("ddddddddddddddddddddddd");
           
           
           
            textview01.setOnClickListener(new OnClickListener(){
       @Override
       public void onClick(View v) {
        Log.i("click","click");
        InputMethodManager imm = (InputMethodManager)getSystemService(Context.INPUT_METHOD_SERVICE);
              imm.showSoftInput(textview01, InputMethodManager.SHOW_FORCED);
       }
            });

        }


    main.xml
      <TextView android:id="@+id/textview01" android:layout_width="fill_parent"
      android:layout_height="wrap_content" android:text="aaaaaaaaaaaaa"
      android:editable="true" android:textSize="20dp" 
       
      android:focusable="true"/>


    설마..이 소스를 이해못하시는 분이 있으리라는 생각은 안합니다. ㅋㅋ

    아!! 추가 설정으로 키보드가 나온후 '다음' 버튼이 아님  '완료' 버튼을 넣고싶으신 분들은
    textview01.setImeOptions(EditorInfo.IME_ACTION_DONE); 
    이런식으로 설정을 해주셔야됩니다.

Designed by Tistory.