android 중?attr/**와 @drawable/** 또는 @color/** 등의 차이 및 용법

전언
오늘 데모를 쓰고 주제를 연구할 때 [?attr/colorPrimary]라는 용법을 만났습니다. 인터넷상에서 모두 천편일률적인 대답을 하기 때문에 저는 억지로 원본을 볼 수밖에 없었습니다. 찻주전자에 만두를 끓이고 잠시 적어서 비망록으로 하겠습니다.
하나,?attr/**
이 Google은 '미리 정의된 스타일' 이라고 부릅니다. 글자 그대로 '미리 정의된 스타일' 입니다.즉 이 스타일에 변수를 정의하고 그 다음에 값을 부여할 수 있는 것과 같다.
가장 많이 사용하는 장면은 사용자 정의 컨트롤러입니다. 예를 들어 현재 사용자 정의 컨트롤러가 필요합니다. 글꼴 색깔을 동적으로 수정할 수 있도록 요구합니다.이때 우리는 이렇게 할 수 있다.
  • 첫 번째 단계:attrs.xml에서 속성을 설명합니다:
  • <declare-styleable name="SunnyAttr">
    
    declare-styleable>
  • 2단계: 속성의 이름과 속성 값의 유형을 지정
  • <declare-styleable name="SunnyAttr">
        <attr name="sunnyTextColor" format="reference"/>
        <attr name="sunnyTextColorWhite" format="color"/>
    declare-styleable>

    속성 값의 유형은 다음과 같습니다.
  • reference: Theme의 자원 ID를 지정하는 것을 참조합니다 (예를 들어 @string/test)
  • color: 색상 값(예: #FFF0000)
  • boolean: 브리 값(예를 들어:true)
  • dimension: 사이즈(예를 들어 100dp)
  • float: 부동점형(예를 들어 0.3)
  • 인덱스: 정형(예: 1)
  • string: 문자열
  • fraction: 백분수(예를 들어 100%)
  • flag: 또는 연산(예: 0x10 | 0x11)
  • enum: 열거
  • .
  • 세 번째 단계: 원본 코드에서 엿볼 수 있기 때문에attr/는 Theme에 따라 변화하기 때문에 우리는 안드로이드 시스템의 특정한 주제를 계승하는 테마 스타일을 정의할 수 있다.
  • 네 번째 단계: 사용자 정의 테마에서 외부 호출에 사용할 속성 이름을 정의하고 값을 부여한다.
  • 
    
  • 다섯 번째 단계: 마지막으로 xml에서 사용자 정의 컨트롤러의 사용자 정의 속성을 사용할 때 값을 부여할 수 있습니다.
  • <com.smartbracelet.sunny.sunnydemo3.SunnyTextView
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:layout_centerInParent="true"
        android:text="    "
        app:sunnyTextColor="?attr/sunnyTextColorRed"
        />

    2. @color, @drawable
    말이 끝나다attr/, @color와 @drawable를 보십시오. 다음 두 개는 우리가 평소에 가장 자주 사용하는 것입니다. 바로 자원을 지정하는 것입니다. 동적이지 않고 주제에 따라 변하지 않습니다.
    <TextView
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:layout_alignParentBottom="true"
        android:text="  "
        android:textColor="@color/sunnyTextColorRed"
        />

    이상, 바로?attr/와 @color, @drawable의 작은 요약...

    좋은 웹페이지 즐겨찾기