2013-03-16 8 views
6

पर प्रोग्राम के रूप में सेट काम नहीं करता मैं दो गतिविधियों है:पारभासी विषय जब एंड्रॉयड 2.3.3 या 4.2

public class MainActivity extends Activity { 
@Override 
protected void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    setContentView(R.layout.activity_main); 
} 
public void click(View view) { 
    Intent intent= new Intent(this, TranslucentActivity.class); 
    startActivity(intent);   
} 
} 

public class TranslucentActivity extends Activity { 
@Override 
protected void onCreate(Bundle savedInstanceState) { 
    this.setTheme(android.R.style.Theme_Translucent); 
    super.onCreate(savedInstanceState); 
    setContentView(R.layout.activity_translucent); 
} 
} 

लेआउट activity_main

<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" 
    xmlns:tools="http://schemas.android.com/tools" 
    xmlns:android1="http://schemas.android.com/apk/res/android" 
    android:layout_width="match_parent" 
    android:layout_height="match_parent" 
    tools:context=".MainActivity" > 

    <Button 
     android:layout_width="wrap_content" 
     android:layout_height="wrap_content" 
     android:layout_alignParentTop="true" 
     android:layout_centerHorizontal="true" 
     android:onClick="click" /> 
</RelativeLayout> 

लेआउट activity_translucent

<RelativeLayout 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" 
    tools:context=".TranslucentActivity" > 

    <TextView 
     android:layout_width="wrap_content" 
     android:layout_height="wrap_content" 
     android:layout_alignParentTop="true" 
     android:layout_centerHorizontal="true" 
     android:text="Hello_world" /> 
</RelativeLayout> 

प्रकट

<manifest xmlns:android="http://schemas.android.com/apk/res/android" 
    package="com.example.translucencytest" 
    android:versionCode="1" 
    android:versionName="1.0" > 

    <uses-sdk 
     android:minSdkVersion="8" 
     android:targetSdkVersion="17" /> 
    <application 
     android:icon="@drawable/ic_launcher" 
     android:label="@string/app_name" 
     android:theme="@style/AppTheme" > 
     <activity 
      android:name="com.example.translucencytest.MainActivity" > 
      <intent-filter> 
       <action android:name="android.intent.action.MAIN" /> 
       <category android:name="android.intent.category.LAUNCHER" /> 
      </intent-filter> 
     </activity> 
     <activity 
      android:name="com.example.translucencytest.TranslucentActivity"> 
     </activity> 
    </application> 
</manifest> 

जब मैं मुख्य गतिविधि में बटन क्लिक करता हूं तो यह पारदर्शी पृष्ठभूमि के साथ पारदर्शी सक्रियता शुरू करता है। मंच 4.0.3 पर एंड्रॉइड एमुलेटर में सभी ठीक दिखते हैं लेकिन अन्य प्लेटफ़ॉर्म पर, उदा। 2.3.3 या 4.2, मुझे पारदर्शी की बजाय काली पृष्ठभूमि मिलती है। क्या गलत हो सकता है?

पीएस मैं गतिविधियों के लिए थीम घोषित करने के लिए मैनिफेस्ट का उपयोग नहीं करना चाहता हूं।

+0

मैंने अभी थीम का परीक्षण किया और यह विभिन्न एंड्रॉइड संस्करणों पर डिज़ाइन के रूप में काम करता है। सामान का एक गुच्छा है जो आपके उदाहरण के साथ गलत हो सकता है। पारदर्शी थीम विंडो को पीछे दिखाएगी, इसलिए यदि वह विंडो काला है तो आपको पारदर्शिता दिखाई नहीं देगी। जब आप अपने आवेदन के लिए थीम घोषित नहीं करते हैं तो यह पारदर्शी नहीं होगा क्योंकि एंड्रॉइड सेट थीम को कॉल करने से पहले एंड्रॉइड एक डिफ़ॉल्ट थीम का उपयोग करता है और फिर आपको अपनी होम स्क्रीन की बजाय डिफ़ॉल्ट थीम दिखाई देगी। आपको मदद करने में सक्षम होने के लिए कम से कम दो लेआउट का उपयोग उदाहरण में और मैनिफेस्ट के साथ-साथ –

+0

@EmanuelMoecklin मैंने पोस्ट को जोड़ा है और मेरी पोस्ट में प्रकट किया है। मुझे संदेह है कि डिफ़ॉल्ट विषय पारदर्शी के बजाय दिखाया गया है, लेकिन यह 4.0.3 पर क्यों काम करता है और 2.3.3 और 4.2 पर काम नहीं करता है? – Wytas

+0

आप अपनी खुद की @ शैली/ऐपथीम का उपयोग कर रहे हैं ताकि आपको अपने उदाहरण का परीक्षण करने में सक्षम होने के लिए भी उसे पोस्ट करना होगा। विभिन्न एंड्रॉइड संस्करण एक ही स्क्रीन तत्वों (विचारों) के लिए विभिन्न विषयों, शैलियों और संसाधनों का उपयोग करते हैं। निर्माता प्रतिस्पर्धी उपकरणों से उन्हें अलग करने के लिए अपने उपकरणों को थीम भी देते हैं। उदाहरण के लिए एक डिवाइस पर एक डिफ़ॉल्ट पृष्ठभूमि काला हो सकती है, यह थोड़ा पारदर्शी हो सकती है और किसी अन्य डिवाइस पर ढाल के साथ हो सकती है। जब तक आप उन्हें स्वयं थीम नहीं करते हैं, तब तक आप वास्तव में "चीजों" पर निर्भर नहीं हो सकते हैं। –

उत्तर

10

वहाँ setTheme() या बल्कि क्यों setTheme() काम नहीं कर रहा अपेक्षा के अनुरूप पर चर्चा का एक बहुत कुछ है:

उस चर्चा के लिए अनिवार्य है कि सेटथीम करता है मैनिफेस्ट में थीम सेट करते समय अच्छी तरह से काम नहीं करते हैं (यहां तक ​​कि डियान हैकबर्न सेटथीम() तरीके से मैनिफेस्ट तरीके का उपयोग करने की सिफारिश करता है, ऊपर तीसरा लिंक देखें)। यह विशेष रूप से सच है जब पृष्ठभूमि को परिभाषित करने की बात आती है। परिणाम आप एमुलेटर में या ग्राफिकल लेआउट संपादक में प्राप्त करते हैं दुर्भाग्य से वास्तविक दुनिया में स्थानांतरित नहीं किया जा सकता है (वास्तविक डिवाइस बोलें)। तो आप अपने 4.0.3 एमुलेटर में जो देखते हैं वह वास्तविक डिवाइस पर समान नहीं हो सकता है (जैसा कि आपने पहले ही देखा है ;-)।

अगर कोई विषय को setTheme उपयोग करने के लिए अपनी गतिविधि तो मैं इस तरह अपने प्रकट बदलने के लिए सिफारिश करेंगे कोई विशेष कारण नहीं है: अपने लेआउट लेकिन मैं हेवन के अन्य तत्वों

<activity android:name=".TranslucentActivity" 
      android:theme="@android:style/Theme.Translucent"/> 

तुम अब भी विषय के लिए setTheme उपयोग कर सकते हैं पारदर्शी या गतिविधियों जैसे संवाद बनाने की बात आती है जब कोई अन्य कामकाजी समाधान नहीं मिला।

+0

आकर्षक और विचित्र। मैंने पाया "कभी-कभी यह काम करता है, कभी-कभी ऐसा नहीं होता" अगर आप 'विंडो बैकग्राउंड' को मैनिफ़ेस्ट में पारदर्शी करने के लिए सेट करते हैं। यदि आप मैनिफेस्ट में '@android: style/Theme.Translucent' का उपयोग करते हैं - ऐसा लगता है कि यह हमेशा काम करता है। – Fattie

0
<activity android:theme="@android:style/Theme.Translucent.NoTitleBar" 
android:name="com.example.translucencytest.MainActivity" > 
<intent-filter> 
<action android:name="android.intent.action.MAIN" /> 
<category android:name="android.intent.category.LAUNCHER" /> 
</intent-filter> 
</activity> 
<activity android:theme="@android:style/Theme.Translucent.NoTitleBar" 
android:name="com.example.translucencytest.TranslucentActivity"> 
</activity> 
+2

मेरे प्रश्न में मैंने कहा कि मैं प्रकट नहीं करना चाहता – Wytas

संबंधित मुद्दे