Androidのアクティビティにテーマを適用しますか?


86

アプリケーション全体にテーマを適用する方法を知っていますが、1つのアクティビティだけにテーマを適用するにはどこに行きますか?

回答:


158

あなたは含めることにより、任意のアクティビティにテーマを適用することができますandroid:theme内部を<activity>マニフェストファイル内。

例えば:

  1. <activity android:theme="@android:style/Theme.Dialog">
  2. <activity android:theme="@style/CustomTheme">

また、プログラムでテーマを設定する場合は、メソッド内のメソッドをsetTheme()呼び出す前に使用します。setContentView()super.onCreate()onCreate()


1
テーマを無効にするのはどうですか?単一のアクティビティで
Yousha Aleayoub 2015

@Yousha Aleayoub:別のテーマを設定してみましたか?
ヤニック2015年

いいえ、でもテーマを無効/削除して基本にしたいだけです... :)
Yousha Aleayoub 2015年

1
tools:context= ".YourAtivityName"ルートでのアクティビティxmlの使用
Faisal Naseer 2017

34

Activity.javaでプログラムで設定するには:

public void onCreate(Bundle savedInstanceState) {

  super.onCreate(savedInstanceState);

  setTheme(R.style.MyTheme); // (for Custom theme)
  setTheme(android.R.style.Theme_Holo); // (for Android Built In Theme)

  this.setContentView(R.layout.myactivity);

Manifest.xml(すべてのアクティビティ)のアプリケーションスコープで設定するには:

 <application
    android:theme="@android:style/Theme.Holo"
    android:theme="@style/MyTheme">

Manifest.xml(単一アクティビティ)のアクティビティスコープで設定するには:

  <activity
    android:theme="@android:style/Theme.Holo"
    android:theme="@style/MyTheme">

カスタムテーマを作成するには、themes.xmlファイルでテーマを宣言し、styles.xmlファイルでスタイルを設定する必要があります。


1
テーマを無効にするのはどうですか?単一のアクティビティで
Yousha Aleayoub 2015

2
なぜ2つのandroid:theme属性を追加したのですか?
udunの炎

@Vineet Kaushikandroid:theme="@android:style/Theme.Holo"は、Androidの組み込みテーマを追加するための構文です。 ファイルにandroid:theme="@style/MyTheme"記述されているカスタムテーマを追加するための構文styles.xmlです。実際のAndroidManifest.xmlファイルでは、セクションごとにどちらか一方のみを使用し、両方は使用しません。
Soren Stoutner 2016年

1
@Yousha Aleayoub、テーマを無効にするには、で空白のテーマを作成してstyles.xmlから、構文を使用しますandroid:theme=@style/MyBlankTheme
Soren Stoutner 2016年

マニフェストに複数のカスタムテーマを配置しても機能しないようです。アプリケーションレベルでテーマを追加し、アクティビティレベルで2番目のテーマを追加すると、アプリケーション1つだけが使用されます。「見た目」が異なるアクティビティごとに1つのテーマを追加しようとしましたが、良い結果は得られませんでした。
ピーター

8

を呼び出す前に、を呼び出してsetContentView()setTheme(android.R.style...)...を必要なテーマ(Theme、Theme_NoTitleBarなど)に置き換えます。

または、テーマがカスタムテーマの場合は、全体を置き換えると、次のようになります。 setTheme(yourThemesResouceId)

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.