2012-01-05 15 views
8

İlk Android uygulamasında çalışıyorum ve etkinliğimi şekillendirmeye çalışıyorum. Nihayetinde, faaliyetimin bir diyalog olarak aynı görünmesini istiyorum. Ben benim AndroidManifest.xml tüm benim aktiviteler aşağıdaki kodu kullanarak Theme.Dialog tarzı verdik:Etkinliğimi Android'de nasıl bir iletişim kutusu olarak gösterebilirim?

<application 
    android:icon="@drawable/group" 
    android:label="@string/app_name" 
    android:theme="@android:style/Theme.Dialog"> 
</application> 

Bu benim faaliyetlerini "yüzen" görünüşü ve bir diyalog sınırları, ancak tarz başlık verir. Başlık, sadece "gerçek" bir diyalogda olduğu gibi "başlık" arka planını ve kenarlığını değil, genel iletişim arka planı ile aynı renk ve görünüme sahiptir. Her iki örnekte de başlığın altında güzel bir kenarlık ve ikincisindeki degrade bir arka plana sahip olduğuna dikkat edin.

Etkinliğimdeki başlığın, sistem iletişim başlığını bir şekilde devraldığından emin olmak için bir yol var mı? Etkinliğimin bir iletişim görünümünün etkili bir şekilde çoğaltılması için - kenarlık ve Theme.Dialog ile birlikte gelen "yüzdürme" ye ek olarak tarzı? Başka bir diyalog olarak benim etkinliğini aramak istemiyorum

Not, sadece BAKIŞ benim Manifest'in intent- göre bir niyet cevaben yüklenen hatta bir dilaog gibi, bunu istiyorum filtreler.

Dialog Example 1

Dialog Example 2

ADD: o onCreate() kadar spin zaman belki benim aktiviteye sahip olabilir bir şekilde, gerçek bir iletişim içine kendini açmak için bazı yöntem aramak var mı? Aktiviteyi sistemden amaçlara cevap verebilmek için hala ihtiyaç duyduğunu unutmayın. izleyin gibi yapabilirsiniz

+0

'un hangi diyaloğunun cevabı vardı? görüntüdeki ilk ya da ikinci. – Sujit

+0

Her ikisi de standart show-dialog yöntemlerini çağırmanın sonucudur.İkincisi, Samsung'un TouchWiz UI'sinde temasıyla ortaya çıkan diyalog, ilki Cyanogenmod'ta çalışıyorum deri tarafından temalı göründüğü gibi. Temel olarak, sadece benim faaliyetimi APPEAR AS IÇIN isterse, kullanıcının cihazı çalıştıran tema ne olursa olsun, AlertDialog.Builder kullandığım gibi bir iletişim kutusu. – eidylon

cevap

2

yerine, özel olarak nasıl farklı bir yaklaşım buldum. Sorularımın, uygulama fikirleri yerine here'u aramak için yaklaşım fikirleri aradım. GalDude33 istediğimi nasıl elde edeceğimi anlamama yardımcı oldu. Onun cevabı, bu Q.

+0

Elbette, ancak bu yaklaşımdaki sorun, sonucun Etkinlik özellikleri içermemesidir. Örneğin. İletişim kutunuzda ActionBar'ı gösteremezsiniz. –

+0

Gerçekten de ActionBar'ı kullanmamanın en büyük dezavantaj olduğunu ve kendi benzer araç çubuğumu kullanmam gerektiğini itiraf ediyorum. ActionBar'ı kullanabilmem için iletişim fonksiyonunu elde etmenin bir yolunu gösterebilirseniz çok mutlu olurum! – eidylon

+0

Etkinliğin boyutunun onCreate (...) yönteminde değiştirilebileceğini öğrendim, ancak siyah kenarlıkların yarı saydam hale getirilmesinin nasıl yapılacağını bilmiyorum, böylece iletişim kutusu gibi görünür: 'WindowManager.LayoutParams params = getWindow(). GetAttributes(); params.height = 300; params.width = 100; getWindow() setGravity (Gravity.CENTER); getWindow(). SetAttributes (params); –

2

..

sizin iletişim için bir düzen oluşturmak ve aşağıda yer ayarlayın.

Dialog mDialog = new Dialog(MainScreen.this,android.R.style.Theme_Translucent_NoTitleBar); 

mDialog .requestWindowFeature(Window.FEATURE_NO_TITLE); 

mDialog .setContentView(R.layout.dialoglayout); 
mDialog .show(); 
+0

Bunu kod içinde başka bir etkinliğe eklemem gerekecek, değil mi? Etkinliğim, doğrudan başlatıcı amaçlarına (ana ekranda oluşturulan kısayollar) yanıt veriyor ve sistemin bu amaçlarla veya doğrudan başlatıcı aracılığıyla çağrıldığında bir iletişim kutusu gibi görünmesini istiyorum. – eidylon

4
özelleştirilmiş iletişim tarzı arka plan ve düzene farklı bir renk verirseniz

Bir Diyalog teması styles.xml

<resources> 
<style name="MyDialogTheme" parent="android:Theme.Dialog"> 
      <item name="android:background">#ffdddddd</item> 
</style> 
</resources> 

yılında, ebeveyn olarak bunu belirterek özelleştirilebilir (altında android:background="#ffffffff" eklemek main.xml dosyanızdaki düzen başlığı), görünüm gibi bir sistem iletişim kutusu verir. Bu yardımcı olur

Umut ..

söz Cevapsız: aşağıda Manifest'inizde özelleştirilmiş tema bakın: ben ne yapmak istediğini bakmak için karar verdikten sonra

android:theme="@style/MyDialogTheme" 
+0

Eh, zaten aktivitemde 'Theme.Dialog' stilini kullanıyorum, ama sadece size kayan bir görünüm ve aktivitenizin etrafındaki sınırı veriyor. Etkinliğin başlık çubuğunu şekillendirmez. İletişim penceresinin görünümünü özelleştirmek istemiyorum. Aslında, etkinliğimin tam olarak dahili iletişim kutusu gibi görünmesini sağlamaya çalışıyorum (ancak kullanıcının telefonunun temasına göre görünebilir). – eidylon