android 사용자 정의 컨트롤 (5) 사용자 정의 조합 컨트롤

전환 하 다http://www.cnblogs.com/hdjjun/archive/2011/10/12/2209467.html 코드 자체 작성
대상: textview 와 ImageButton 조합 을 실현 하고 Xml 를 통 해 사용자 정의 컨트롤 의 속성 을 설정 할 수 있 습 니 다. 
      코드 나 xml 를 통 해 사용자 정의 컨트롤 의 속성 을 설정 합 니 다.
1. 컨트롤 레이아웃: Linearlayout 을 루트 레이아웃 으로 하고 TextView 하나, ImageButton 하나.    
Xml 코드
< ?xml version="1.0" encoding="utf-8"?>  
    < LinearLayout xmlns:Android="http://schemas.android.com/apk/res/android"  
    android:layout_width="fill_parent" android:layout_height="fill_parent"  
    android:gravity="center_vertical">  
    < TextView android:layout_height="wrap_content" android:id="@+id/text1"  
    android:layout_width="wrap_content">< /TextView>  
    < ImageButton android:layout_width="wrap_content"  
    android:layout_height="wrap_content" android:id="@+id/btn1">< /ImageButton>  
    < /LinearLayout>

2. 컨트롤 코드 를 사용자 정의 하여 LinearLayout 에서 계승 합 니 다.    
자바 코드
public class ImageBtnWithText extends LinearLayout {  
     }  
      public ImageBtnWithText(Context context) {  
      this(context, null);  
      }  
       
      public ImageBtnWithText(Context context, AttributeSet attrs) {  
      super(context, attrs);  
       //       Xml          。 
      LayoutInflater.from(context).inflate(R.layout.imagebtn_with_text, this, true);
        }  
      }

  3. 메 인 인터페이스 레이아웃 xml 에서 사용자 정의 컨트롤 사용 하기:    
Xml 코드 
< com.demo.widget2.ImageBtnWithText  
   android:id="@+id/widget"  
   android:layout_width="fill_parent"  
   android:layout_height="fill_parent" />

즉, 완전한 사용자 정의 컨트롤 클래스 경 로 를 사용 합 니 다: com. demo. widget 2. ImageBtnWithText 에서 요 소 를 정의 합 니 다.  실행 하면 컨트롤 이 인터페이스 에 불 러 올 수 있 습 니 다.  4. 버튼 에 그림 과 텍스트 설정  그림 이 고정 되 어 있 지 않 으 면 컨트롤 레이아웃 에 ImageButton 의 src 속성 을 직접 설정 하면 됩 니 다.  4.1 자바 코드 설정 을 통 해 컨트롤 코드 에 함수 인 터 페 이 스 를 제공 합 니 다.    
자바 코드
public void setButtonImageResource(int resId) {  
   mBtn.setImageResource(resId);  
   }  
    
   public void setTextViewText(String text) {  
   mTv.setText(text);  
   }

그리고 메 인 인터페이스의 onCreate () 에서 함수 호출 설정 을 통 해 설정 하면 됩 니 다.  4.2 Xml 를 통 해 속성 설정  4.2.1 먼저 Xml 가 설정 할 수 있 는 속성 집합 을 정의 하고 values 에서 attrs. xml 를 만 듭 니 다. 파일 이름 은 마음대로 할 수 있 습 니 다. 보통 attrs. xml 이 라 고 합 니 다.    
Xml 코드
< ?xml version="1.0" encoding="utf-8"?>  
  < resources>  
   < declare-styleable name="ImageBtnWithText">  
   < attr name="android:text"/>  
   < attr name="android:src"/>  
   < /declare-styleable>  
   < /resources>

속성 집합 이름: ImageBtnWithText, 자신 은 실제 에 따라 정의 할 수 있 습 니 다.  집합 에 포 함 된 속성 목록, 줄 마다 속성.  4.2.2 사용자 정의 컨트롤 구현 코드 를 수정 하여 xml 에서 정의 하 는 속성 을 가 져 옵 니 다.    
자바 코드
TypedArray a = context.obtainStyledAttributes(attrs, R.styleable.ImageBtnWithText);  
  CharSequence text = a.getText(R.styleable.ImageBtnWithText_android_text);  
  if(text != null) mTv.setText(text);  
  Drawable drawable = a.getDrawable(R.styleable.ImageBtnWithText_android_src);  
  if(drawable != null) mBtn.setImageDrawable(drawable);  
  a.recycle();

우선 context. obtainStyledAttributes 를 통 해 모든 속성 배열 을 얻 을 수 있 습 니 다.  그리고 TypedArray 류 의 getXXXX () 시리즈 인 터 페 이 스 를 통 해 해당 하 는 값 을 얻 을 수 있 습 니 다.  4.2.3 메 인 인터페이스 레이아웃 에 사용자 정의 컨트롤 의 속 도 를 설정 합 니 다.    android:text="ABC" android:src="@drawable/icon  4.3 사용자 정의 이름 속성:  4. 2 에서 사용 하 는 속성 명 은 안 드 로 이 드 시스템 네 임 스페이스 이 고 모두 안 드 로 이 드 로 시작 합 니 다. 예 를 들 어 안 드 로 이 드: text 등 입 니 다.  실제 개발 에 서 는 일부 속성 명 을 사용자 정의 합 니 다. 이러한 속성 명 은 4.2.1 에서 언급 한 attrs. xml 에 정의 되 어 있 습 니 다.  4.3.1 정의 속성 명    
Xml 코드 
< attr name="appendText" format="string"/>

시스템 을 직접 사용 하 는 attr 와 달리 format 속성 을 추가 하려 면 이 속성 이 어떤 형식 인지 설명 합 니 다. format 옵션 은 주 1 을 참조 할 수 있 습 니 다.  4.3.2 사용자 정의 속성 사용    
Xml 코드
효과 도
다운로드 주소  http://download.csdn.net/detail/ethan_xue/4109870

좋은 웹페이지 즐겨찾기