Android主題定製及修改

來源:互聯網
上載者:User

Android主題定製及修改

簡介:在寫Android的App時,我們在Layout中的xml檔案中都會引用到大量的布局組件及風格,有時Android提供的原生組件並不能滿足我們的需求,這時我們就要考慮對style及theme進行定製及修改。

布局檔案的解釋原理:
在Layout的每一個控制項如TextView、EditText、Button等,例如Button控制項,在目錄frameworks/base/core/java/android/widget/下存在Button.java這個檔案,在Button.java代碼:
        public Button(Context context, AttributeSet attrs) {
        this(context, attrs, com.android.internal.R.attr.buttonStyle);
    }
    public Button(Context context, AttributeSet attrs, int defStyle) {
        super(context, attrs, defStyle);
    }
    在layout中的布局控制項就是引用的Button.java這個控制,寫完App程式進行編譯時間,它會自動引用及關聯相應的控制項定義。第一個建構函式是Button的預設style,而第二個會根據寫app寫的style進行選擇需要的style.Button繼承自TextView.java,在這個檔案中的建構函式會看到選擇的過程,這個建構函式是相當龐大的一個函數。

Button.java有引用相關的style及主題,例如在Button.java就引用了buttonStyle這個style,在寫layout就可以在Button這個控制中加入這個style,所有的風格的定義都是在framework中的在frameworks/base/core/res/res/values/themes_device_defaults.xml有關於所有style的theme的名字,這些style的定義在frameworks/base/core/res/res/values/styles_device_defaults.xml檔案中,進擴充Item便可以得到某個style的的所有屬性。

在styles.xml存在這個的定義:
        <style name="Widget.DeviceDefault.Button" parent="Widget.Holo.Button" >
        </style>
    這裡的Widget.DeviceDefault.Button繼承自Widget.Holo.Button,這裡Widget.Holo.Button style便擁有Widget.Holo.Button 控制項上的所有屬性及功能,這裡跟類繼承非常類似,如果不需要Widget.Holo.Button控制項的一些item,可以進行重寫,
    <style name="Widget.DeviceDefault.Button" parent="Widget.Holo.Button" >
    <item name="android:textColor">@android:color/XXX</item>
    </style>
    便對android:textcolor進行了複寫,這裡把XXX可以在一個xml定義,並寫上相應的顏色值,由於在framework中進行了修改,所有在app中引用的這個控制項都將進行修改。如果不想在所有的app中這個控制項都起作用,便可以在app中對這個控制項進行重寫。將style寫在一個app的layout中的xml檔案,只對此app起作用。

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.