2011-11-28 3 views
7

이것이 이상한 일이라는 것을 알고 있지만, 이 필요합니다.은 EditText와 유사하지만 여전히 동작합니다. 단추. 내 레이아웃 XML은 현재 다음과 같습니다EditText처럼 보이도록 버튼을 스타일링합니다. (여전히 버튼처럼 동작합니다.)

효과적으로 (버튼에 포커스가없는 한 해고되는 것을 onClick 이벤트를 방지를함으로써 조금 그에게 글고 치기의 모양을 제공하지만, 또한 행동 놨
<Button 
    android:layout_width="match_parent" 
    android:layout_height="wrap_content" 
    style="?android:attr/editTextStyle" /> 

두 번 클릭해야 함). 단추의 동작을 변경하지 않고 스타일을 유지할 수있는 방법이 있습니까?

EditText처럼 보이는 9 패치 배경을 만들려고 생각했지만 가능하면 많은 다른 Android 버전과 스킨을 사용하여 시스템 스타일을 사용하고 싶습니다.

답변

28

단추처럼 작동하는 EditText는 어떻습니까?

<EditText android:id="@+id/Edit" 
     android:layout_width="fill_parent" 
     android:layout_height="wrap_content" 
     android:focusable="false" 
     android:focusableInTouchMode="false" 
     android:clickable="true"/> 

OnClickListener도 정의 할 수 있습니다. 그리고 그것은 초점을 얻지 못할 것입니다.

+1

나는 이것이 저라면 간다. – dmon

+1

감사합니다. 똑같은 필요성을 가지고 있습니다 ... 내가 "상자 밖"이라고 부르는 것이 있습니다. – Shahar

1

절대적으로 버튼 일 필요가있는 경우 단추에 포커스를 받으면 onclick을 발생시키는 포커스 수신기를 단추에 추가 할 수 있습니다.

weirdoButton.setOnFocusChangeListener(new OnFocusChangeListener() { 

    @Override 
    public void onFocusChange(View view, boolean hasFocus) { 
    if(hasFocus) { 
     weirdoButton.performClick(); 
    } 
    } 
}); 

단점은 버튼이 트랙볼이나 d 패드를 통해 포커스를 받으면 클릭이 작동한다는 점입니다. 레이아웃 파일에서 초점을 맞추지 못하게 설정하십시오.

<Button 
    android:id="@+id/weirdoButton" 
    android:layout_width="match_parent" 
    android:layout_height="50dip" 
    android:focusable="false" 
    style="?android:attr/editTextStyle" /> 
0

허용되는 대답을 사용하면 EditText를 버튼으로 스타일링 할 수 있지만 불일치가 있습니다. 길게 누르면, UX의 측면에서 끔찍한 텍스트를 붙여 넣을 수 있습니다.

이것은 EditText로 스타일을 적용한 것입니다.

<Button 
    android:layout_width="0dp" 
    android:layout_height="wrap_content" 
    android:textSize="16sp" 
    android:focusable="false" 
    android:id="@+id/btnAddMember" 
    style="?android:attr/editTextStyle" 
    android:focusableInTouchMode="false" 
    android:clickable="true" 
    android:hint="Button Content"/> 
관련 문제