ใช้ธีมกับกิจกรรมใน Android หรือไม่


86

ฉันรู้วิธีใช้ธีมกับแอปพลิเคชันทั้งหมด แต่ฉันจะไปใช้ธีมกับกิจกรรมเดียวได้อย่างไร

คำตอบ:


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

@Yousha Aleayoub: คุณลองตั้งธีมอื่นดูไหม?
Yannick

ไม่ แต่ฉันแค่ต้องการปิด / ลบธีมและทำให้มันเป็นพื้นฐาน ... :)
Yousha Aleayoub

1
และในกิจกรรม xml ใช้tools:context= ".YourAtivityName"ในรูท
Faisal Naseer

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

2
เหตุใดคุณจึงเพิ่มandroid:themeคุณลักษณะสองอย่าง
Flame of udun

@Vineet Kaushik android:theme="@android:style/Theme.Holo"เป็นไวยากรณ์สำหรับการเพิ่มธีมในตัวของ Android android:theme="@style/MyTheme"คือไวยากรณ์สำหรับการเพิ่มธีมแบบกำหนดเองที่อธิบายไว้ในstyles.xmlไฟล์ของคุณ ในAndroidManifest.xmlไฟล์จริงของคุณคุณจะใช้เพียงไฟล์เดียวสำหรับแต่ละส่วนไม่ใช่ทั้งสองอย่าง
Soren Stoutner

1
@Yousha Aleayoub เพื่อปิดการใช้งานรูปแบบที่สร้างธีมที่ว่างเปล่าในและจากนั้นใช้ไวยากรณ์styles.xml android:theme=@style/MyBlankTheme
Soren Stoutner

ดูเหมือนว่าการใส่ธีมที่กำหนดเองมากกว่าหนึ่งรายการในไฟล์ Manifest ไม่ได้ผล หากคุณเพิ่มธีมที่ระดับแอปพลิเคชันและวินาทีที่ระดับกิจกรรมจะใช้เฉพาะแอปพลิเคชันเท่านั้น ฉันพยายามเพิ่มหนึ่งธีมสำหรับแต่ละกิจกรรมด้วย "รูปลักษณ์" ที่แตกต่างกัน แต่ไม่มีผลลัพธ์ที่ดี
ปีเตอร์

8

ก่อนที่คุณจะโทรโทรsetContentView()หาsetTheme(android.R.style...)และแทนที่ ... ด้วยธีมที่คุณต้องการ (ธีม, Theme_NoTitleBar ฯลฯ )

หรือถ้าธีมของคุณเป็นธีมที่กำหนดเองให้แทนที่สิ่งทั้งหมดเพื่อให้คุณได้รับ setTheme(yourThemesResouceId)

โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.