ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • 커스텀 TextInputLayout
    카테고리 없음 2020. 8. 9. 15:31

    질문

    저의 CustomTextInputLayout Widget.MaterialComponents.TextInputLayout.OutlinedBox를 기본 스타일로 XML 어디에도 정의하지 않고 갖도록하고 싶습니다.

    저는 이것을 시도했습니다.

    class CustomTextInputLayout @JvmOverloads constructor(
        context: Context, attrs: AttributeSet? = null, defStyleAttr: Int = 0
    ) : TextInputLayout(ContextThemeWrapper(context, R.style.Widget_MaterialComponents_TextInputLayout_OutlinedBox), attrs, defStyleAttr) {
    
    }

    그리고 다음은 이것을 시도했습니다.

    class CustomTextInputLayout @JvmOverloads constructor(
        context: Context, attrs: AttributeSet? = null, defStyleAttr: Int = 0
    ) : TextInputLayout(context, attrs, R.style.Widget_MaterialComponents_TextInputLayout_OutlinedBox)

    하지만 모두 작동하지 않습니다. 기본 XML 방식을 시도했습니다.

    <com.custom.CustomTextInputLayout
        style="@style/Widget.MaterialComponents.TextInputLayout.OutlinedBox"
        ...>
        <com.google.android.material.textfield.TextInputEditText
            ...
            android:hint="Sample Hint" />
    </com.custom.CustomTextInputLayout>
    

    작동하고 있습니다.

    • 내가 여기서 무엇을 놓치고 있습니까?
    • XML을 사용하지 않고 커스텀 TextInputLayout에 대한 기본 스타일을 설정하려면 어떻게해야합니까?

     

    답변1

    정확히 당신이 찾고 있는 것이 아닙니다.

    다음 코드를 정의할 수 있습니다.

    public class CustomTextInputLayout @JvmOverloads constructor(
            context: Context, attrs: AttributeSet? = null, defStyleAttr: Int = R.attr.textInputStyle
    ) : TextInputLayout(ContextThemeWrapper(context, R.style.Outlined_Theme), attrs, defStyleAttr) { ...  }

    그리고 :

    <style name="Outlined.Theme" parent="">
          <item name="textInputStyle">@style/Widget.MaterialComponents.TextInputLayout.OutlinedBox</item>
    </style>

    그런 다음 레이아웃에서 다음 코드를 사용하십시오.

     <com.example.quicksample.CustomTextInputLayout
           ....
           android:hint="Sample">
    
           <com.google.android.material.textfield.TextInputEditText../>
    
     </com.example.quicksample.CustomTextInputLayout>

     

    여기에 이미지 설명 입력

    ContextThemeWrapper (context, R.style.Widget_MaterialComponents_TextInputLayout_OutlinedBox ) 두 번째 매개 변수는 스타일이 아닌 속성 테마 여야하므로 코드가 작동하지 않습니다 ( TextInputLayout (context, attrs, R.style.Widget_MaterialComponents_TextInputLayout_OutlinedBox) )



     

     

     

     

    출처 : https://stackoverflow.com/questions/62463203/custom-textinputlayout

    댓글

Designed by Tistory.