android - 안드로이드 액션 바 텍스트 색




Android-사용자 정의 스타일로 지정된 여백이 적용되지 않습니다. (2)

EditText의 기본 여백을 10dp로하고 싶습니다. 따라서, 내 styles.xml 파일에서 다음을 설정했습니다.

<resources xmlns:android="http://schemas.android.com/apk/res/android">

    <style name="MyTheme" parent="android:style/Theme.NoTitleBar">
        <item name="android:editTextStyle">@style/edit_text_default</item>
    </style>

    <style name="edit_text_default" parent="android:style/Widget.EditText">
        <item name="android:layout_margin">10dp</item>
    </style>

</resources>

그런 다음 AndroidManifest.xml에서 애플리케이션 테마를 정의한 테마로 설정합니다.

<application
     android:icon="@drawable/ic_launcher"
     android:label="@string/app_name"
     android:theme="@style/MyTheme" >
...

테마의 "제목 표시 줄 없음"측면이 효과적입니다. 그러나 EditText의 기본 여백은 그렇지 않습니다. 여전히 부모를 채우고 있습니다. 여기 내 테이블보기입니다 :

<TableLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:tools="http://schemas.android.com/tools"
    android:layout_width="fill_parent"
    android:layout_height="fill_parent"
    android:background="#FFFFFF" >
    <TableRow>
        <EditText android:hint="@string/last_name" />
    </TableRow>
    <TableRow>
        <EditText android:hint="@string/first_name" />
    </TableRow>
</TableLayout>

매니페스트에서 올바른 테마 이름을 사용하지 않습니다. 다음과 같이 변경해보십시오.

<application
     android:icon="@drawable/ic_launcher"
     android:label="@string/app_name"
     android:theme="@style/MyTheme" >

짧은 답변 : 사용자 정의 스타일에서 layout_margin을 지정하는 경우이 스타일은 지정된 여백을 갖기를 원하는 개별보기에 명시 적으로 적용해야합니다 (아래 코드 샘플 참조). 이 스타일을 테마에 포함시키고 응용 프로그램이나 활동에 적용하면 효과가 없습니다.

<TableLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:tools="http://schemas.android.com/tools"
    android:layout_width="fill_parent"
    android:layout_height="fill_parent"
    android:background="#FFFFFF" >
    <TableRow>
        <EditText android:hint="@string/last_name" style="@style/edit_text_default" />
    </TableRow>
    <TableRow>
        <EditText android:hint="@string/first_name" style="@style/edit_text_default" />
    </TableRow>
</TableLayout>

설명 : layout_ 으로 시작하는 속성은 LayoutParams 이거나 해당 하위 클래스 중 하나입니다 (예 : MarginLayoutParams ). LayoutParams 는 부모 ViewGroup 배치하려는 방식을 알리기 위해 뷰에서 사용됩니다. 각 ViewGroup 클래스는 ViewGroup.LayoutParams 를 확장하는 중첩 클래스를 구현합니다. 따라서 LayoutParamsViewGroup 유형에만 해당됩니다. 즉, TableLayoutLinearLayoutLayoutParams 중 하나 인 layout_margin 을 가질 수 있지만 완전히 다른 속성으로 간주됩니다.

따라서 layout_margin 은 어디에서나 적용 할 수있는 일반 속성이 아닙니다. 유효한 인수로 명확하게 정의하는 ViewGroup 컨텍스트 내에서 적용되어야합니다. View는 LayoutParams 가 적용될 때 부모 ViewGroup 의 유형을 알고 있어야합니다.

테마의 해당 스타일을 포함하여 스타일에 layout_margin을 지정하고 해당 테마를 응용 프로그램 / 활동에 적용하려고하면 ViewGroup 상위 항목이 아직 지정되지 않았으므로 인수가 유효하지 않으므로 레이아웃 속성이 삭제됩니다. 그러나 부모 ViewGroup ( TableLayout )을 알고 있기 때문에 TableLayout 으로 정의 된 EditText 보기에 스타일을 적용하는 것이 효과적입니다.

출처 :

레이아웃 매개 변수 에 대한 Android 설명서.

안드로이드 프레임 워크 엔지니어와 사용자 adamp 질문 에 adamp .

또한, 사용자 inazaruk 이 질문 에 주어진 대답.





themes