2013-01-17 4 views
4

프로그래밍 방식으로 Android 스타일 버튼을 추가/제거하는 방법은 무엇입니까? 런타임에 스타일을 적용 할 수 있습니까?프로그래밍 방식으로 Android 스타일링하는

나는 내가하고 싶었던 버튼을 클릭 할 때 무엇이 ​​

 
    ---------- ---------- 
    | Button A | | Button B | 
    ---------- ----------

과 같이 두 개의 버튼을 가지고, 그 다음 뭔가 다른 버튼 B의 스타일을 변경, 일부 코드를 실행 (버튼 B라고 할 수 있습니다) (즉, 강조 표시된 테두리)와 같습니다.

 
    ---------- ========== 
    | Button A | || Button B || 
    ---------- ==========

스타일을 만드는 방법을 알고 있습니다. .

+1

"프로그래밍 방식"을 의미합니까? –

+0

xml로 설정할 수있는 모든 것을 Java 코드의 런타임에 설정할 수 있습니다. 일반적으로 setXXX 함수가 있습니다. 여기서 XXX는 변경하려는 것입니다. Button 클래스와 그 조상을 찾아서 찾으십시오. –

+0

XML 파일의 모든 레이아웃 속성에는 Java의 해당 getter 및 setter 함수가 있습니다. Android SDK 문서를 확인하여 원하는 정확한 문서를 찾아야합니다. 이를 찾는 데 도움이 필요하면 버튼을 변경하려는 XML 스타일의 스 니펫을 게시하십시오. –

답변

11

당신을위한 코드를 해봅시다 ... :) 뷰 (이 경우 버튼)에 스타일을 적용하려면 동적으로 다음을 수행해야합니다. 레이아웃 폴더 (res/layout).

나는

<?xml version="1.0" encoding="utf-8"?> 
<selector xmlns:android="http://schemas.android.com/apk/res/android"> 

    <item android:state_pressed="true"> 
     <shape> 
      <solid android:color="#449def"/> 
      <stroke android:width="1dp" android:color="#2f6699"/> 
      <corners android:radius="3dp"/> 
      <padding android:left="10dp" android:top="10dp" android:right="10dp" 
        android:bottom="10dp"/> 
     </shape> 
    </item> 

    <item> 
     <shape> 
      <gradient android:startColor="#449def" android:endColor="#2f6699" android:angle="270"/> 
      <stroke android:width="1dp" android:color="#2f6699"/> 
      <corners android:radius="4dp"/> 
      <padding android:left="10dp" android:top="10dp" android:right="10dp" 
        android:bottom="10dp"/> 
     </shape> 
    </item> 

</selector> 

지금에서 onCreate() 활동의 방법에 다음 코드를 추가하여 버튼에 스타일을 적용 buttonstyle.xml ..

Button transferBtn = new Button(this); 
transferBtn.setText("Test Example"); 
transferBtn.setId(R.string.transferBtn); 
transferBtn.setBackgroundResource(R.layout.buttonstyle); 
+0

** buttonstyle.xml 파일을 ** res/drawable ** 디렉토리에 두어야한다는 것을 알게되었습니다. (먼저 디렉터리를 만들어야 함) – Sydwell

3

코드에서 런타임에 xml 정의 스타일을 적용 할 수 없습니다. 버튼을 클릭 할 때 배경과 글꼴 스타일을 변경하려면 selector을 만들어야 정상적인 버튼이나 클릭 된 상태에 사용할 배경을 정의해야합니다.

선택기가 원하는 것이 아닌 경우 단추의 setXXX 메서드를 통해 모든 단추 속성을 원하는 값으로 수동 설정해야합니다.

P. 다른 스타일로 xml에서 새로 부풀린 새 단추를 이전 단추와 바꿀 수 있습니다. 하지만 이것은 내가 생각하기에 좋은 방법은 아닙니다 ...

+0

예 셀렉터 XML을 발견하고 코드를 수정하기 위해 setBackgroundResource (...)를 사용하여 업데이트했습니다. 감사! – ibaguio

0

으로,로 명명 나는이 다른 스레드에서 대답했다. 여러분은 지원자 라이브러리를 사용하고 있다면 프로그래머가 프로그래밍 방식으로 배경을 프로그램 적으로 설정할 수도 있고 프로그래밍 방식으로 스타일을 설정할 수도있다. (내가 제안한대로 here).

관련 문제