1. 程式人生 > >android 樣式 與 主題的動態設定

android 樣式 與 主題的動態設定

首先看效果圖


第一步:


程式碼:

 <!-- 自定義樣式 -->
    <style name="text_content_style">
        <item name="android:layout_width">wrap_content</item>
        <item name="android:layout_height">wrap_content</item>
        <item name="android:textColor">#ff0000</item>
        <item name="android:textSize">30sp</item>
    </style>
    <!-- 樣式繼承 -->

    <style name="day_text" parent="@style/text_content_style">
        <item name="android:background">#00ff00</item>
        <item name="android:textColor">#0000ff</item>
    </style>
    <!-- 繼承了系統主題 -->
    <style name="day_theme" parent="@android:style/Theme.NoTitleBar">
        <item name="android:windowBackground">@drawable/effect_env_auditorium</item>
    </style>

    <style name="night_theme">
        <item name="android:background">#000000</item>
    </style>

第二步:

程式碼中:

package com.example.teststyletheme;

import android.os.Bundle;
import android.annotation.SuppressLint;
import android.app.Activity;
import android.view.View;
import android.view.View.OnClickListener;
import android.widget.Button;

@SuppressLint("NewApi")
public class MainActivity extends Activity implements OnClickListener {

	Button dayBtn, nightBtn;

	private int THEMEID = -1;// 設定主題id

	@Override
	protected void onCreate(Bundle savedInstanceState) {
		super.onCreate(savedInstanceState);

		if (savedInstanceState != null) {
			if (savedInstanceState.getInt("theme", -1) != -1) {
				THEMEID = savedInstanceState.getInt("theme");
				this.setTheme(THEMEID); // 設定主題面板
			}
		}
		setContentView(R.layout.activity_main);

		dayBtn = (Button) findViewById(R.id.day);
		nightBtn = (Button) findViewById(R.id.night);

		dayBtn.setOnClickListener(this);
		nightBtn.setOnClickListener(this);

	}

	// 設定主題,並重建
	private void onTheme(int iThemeId) {
		THEMEID = iThemeId;
		this.recreate();
	}

	// 儲存主題ID,onCreate 時讀取主題
	@Override
	public void onSaveInstanceState(Bundle outState) {
		super.onSaveInstanceState(outState);
		outState.putInt("theme", THEMEID);
	}

	@Override
	public void onClick(View v) {
		switch (v.getId()) {
		case R.id.day:
			onTheme(R.style.day_theme);
//			onTheme(android.R.style.Theme_Holo_Light);
			break;

		case R.id.night:
			onTheme(R.style.night_theme);
			break;
		}

	}

}

附上佈局程式碼:
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:tools="http://schemas.android.com/tools"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:orientation="vertical" >

    <TextView
        style="@style/text_content_style"
        android:text="我使用了樣式" />

    <TextView
        style="@style/day_text"
        android:text="我使用了繼承樣式" />

    <Button
        android:id="@+id/day"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="圖片主題day" />

    <Button
        android:id="@+id/night"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="主題night" />

</LinearLayout>


相關推薦

android 樣式 主題動態設定

首先看效果圖 : 第一步: 程式碼: <!-- 自定義樣式 --> <style name="text_content_style"> <item name="android:layout_width">w

Theme、StylesheetTheme設定ASP.NET的樣式主題

1.動態網站與靜態網站 ASP.NET建立的動態網站,與靜態網站相比,簡單地說,就是在靜態網站的基礎上增加了由在伺服器端執行的程式碼動態生成的內容,這個在伺服器端執行的程式碼包括內碼表中的後臺程式碼,也包括前臺頁面中的控制元件。 靜態網頁的樣式,同樣適應於動態網頁的靜態內容

Android在程式碼裡動態設定文字顏色Seletor中getColorgetColorStateList方法的區別(坑)

當我們需要動態的在程式碼裡給文字設定顏色,而這個文字具有點選態的時候,我們經常會遇到怎麼設定都不好使的情況,接下來從踩坑、填坑,到最後分析原因整個流程詳細介紹一下這種case。 下面是我們在/res/color資料夾裡給元素設定的文字顏色seletor:***

android開發:如何動態設定ImageView和button的背景

改變ImageView的背景 Drawable drawable = ResourcesCompat.getDrawable(getResources(), R.drawable.has_authorization, null); imv_authorization.setBac

解決Android開發中ViewPager動態設定PagerAdapter時第二次進入Fragment內容不顯示的問題

問題描述 筆者最近的Android專案要用到PagerSlidingTabStrip和ViewPager的組合,但是從github上下載原始碼後順利執行示例專案,用到自己的專案後發現一個問題,就是第二次進入該ViewPager所在Fragment後PagerS

Android 開發,JAVA動態設定控制元件大小

在我們的實際android開發中,我們經常需要對控制元件進行設定。在xml中設計大小,我們大家都很熟悉。那麼,使用java動態設定控制元件大小,該如何寫呢。以下是我寫的方法: /** * 設定控制元件大小 * @param view 控制元件

Android 在程式碼裡動態設定ProgressBar的顏色

設定ProgressBar滑動的顏色,其函式為:progressBar.setProgressDrawable(Drawable d); 但是,設定一個普通的Drawable是沒有用的,ProgressBar會把該圖片平鋪。 正確的方式是:設定一個ClipDrawable,

Android 根據圖片高度動態設定ViewPager高度

有圖片的地方,就有需求。 為什麼一個App有那麼多的Banner,這裡就不吐槽了。我們還是直接進主題,如何讓ViewPager自適應圖片的高度。 效果如下: 如何去改變ViewPager的高度,都知道用setLayoutParams,我們不清楚的是,在

android樣式主題

1、樣式和主題的區別:樣式的作用範圍在控制元件上,而主題的作用範圍在Activity或者Application上。所以,樣式一般在佈局檔案中配置,而主題在Manifest.xml檔案中配置 2、values/styles檔案<style name="my_style"

Android 風格主題(style and theme)

1、什麼是Style,什麼是Theme?         Style 和 theme:是一個包含一種 或者 多種格式化 屬性 的集合  ,並且 style和theme都是資源,存放在res/values 資料夾下 即可,android提供了很多這樣的預設資源。你可以來使用它們。同時你也可以自己定義style

Android約束佈局ConstraintLayout動態設定Id失效問題解決辦法

      當你需要在程式碼中動態給約束佈局新增約束,而不能在xml檔案中寫約束的時候,你需要用到ConstraintSet這個類,谷歌給我們寫的很清楚。https://developer.android.google.cn/reference/android/support

vue.js 動態設定樣式

控制多個樣式: <!DOCTYPE html> <html> <head> <meta charset="utf-8"> <title>Vue 測試例項</title> <script src="https

css中字型段落屬性設定/文字高階樣式

CSS中字型與段落屬性 毫無疑問,不管什麼網站,文字一定是必不可少。文字可以是網頁傳播資訊的主要手段。那麼怎麼顯示文字,才能更加的美觀,那麼大家需要了解以下文字屬性。   字型屬性 屬性 用途 語法(一些寫法)

Android TextView動態設定字型顏色選擇器

Android 在用字型顏色選擇器時: 一種在xml檔案中直接設定textColor通常會用這種情況,這種情況字型顏色Selector挺好用的: android:textColor="@color/selector_delete_color" 然而,在程式碼中設定字型顏色選擇器

Android動態設定佈局寬高

例如設定一個圖片寬高 關鍵程式碼: //取控制元件當前的佈局引數 LinearLayout.LayoutParams params = (LinearLayout.LayoutParams) imageView.getLayoutParams(); //設定寬度值 params.wi

AngularJS - 動態設定樣式動態顯示內容

<td ng-class="{'-2': 'status-notpass-color', '-1': 'status-ban-color', '0': 'status-default-color', '1': 'status-pass-color', '2': 'status-wa

Android 使用者圓形影象的設定上傳

</pre>使用者圓形影象的設定與上傳,技術使用了框架imageloader jar包,可以進行圖片的載入,可以使用imageloader 也可以自己寫  圖片的選擇當時選擇了系統自帶的圖片管理器,圖片的剪下使用系統自帶的。直接貼出程式碼</p><p&

Android 自定義橫向進度條(可動態設定最大值)

自定義橫向進度條       主佈局檔案中包 含          <LinearLayout android:id="@+id/linearlayout" android:layout_width="match_parent" androi

android 在java程式碼中動態設定控制元件的位置和設定片大小

需要動態改變佈局裡面控制元件的相對位置 如: 1.改變RelativeLayout佈局裡面某個控制元件的layout_toLeftOf 的屬性 RelativeLayout.Layoutparams params = (RelativeLayout.LayoutParams)view

elementUI 主題動態設定

<template> <el-color-picker v-model="theme" class="theme-picker" :predefine="predefineColors" popper-class="theme-picker-dropd