Android mizanpaj dosyalarında “araçlar: bağlam” nedir?


937

ADT'nin yeni bir sürümüyle başlayarak, mizanpaj XML dosyalarındaki bu yeni özelliği fark ettim, örneğin:

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:tools="http://schemas.android.com/tools"
    android:orientation="vertical"
    android:layout_width="fill_parent"
    android:layout_height="fill_parent"
    tools:context=".MainActivity" />

"Araçlar: bağlam" ne için kullanılır?

Orada yazılan etkinliğin tam yolunu nasıl biliyor? Manifest içindeki uygulamanın paketine bakıyor mu?

Bağlamı genişleten sınıflarla mı yoksa yalnızca etkinlikleri mi içeriyor? ListView öğeleri vb. İçin kullanılabilir mi?


evet, ben her zaman en son adt & sdk sürümlerinin (şu anda adt & sdk 20 önizleme 3 kullanarak) en son yüklemek beri ("ne yeni" bölümlerinde görmeden) başka ne kaçırdım merak ediyorum.
android geliştirici

9
Ayrıca, şu resmi dokümanlara da göz atın: < tools.android.com/tech-docs/tools-attributes#TOC-tools:context >.
MDTech.us_MAN

2
Uygulamam hala bağlamsız çalışıyor.
en saygıdeğer efendim

1
@ user132522 Her şey IDE'nin kendisinde geliştirme ile ilgili. Uygulamayı çalıştırırken değil
android geliştirici

Yanıtlar:


440

Bu, kullanıcı arayüzü düzenleyicisinin düzen önizlemenizi oluşturmak için kullandığı etkinliktir. Bu belgelenmiştir burada :

Bu öznitelik, bu düzenin hangi etkinlikle ilişkilendirildiğini varsayılan olarak bildirir. Bu, düzenleyicinin veya düzen önizlemesinde, önizlemede düzen temasının ne olması gerektiği ve bunları bir hızlı düzeltmeden yaptığınızda onClick işleyicilerinin nereye ekleneceği gibi etkinlik hakkında bilgi gerektiren özellikleri etkinleştirir.


anlıyorum . Buradaki ekran görüntüsüne göre: tools.android.com/_/rsrc/1337185954574/recent/newconfigchooser/… , bunun Bağlamı genişleten bir sınıf olması gerekmediği anlamına gelir, değil mi? eğer öyleyse, söylediklerinden daha fazlasını yaptığını düşünüyorum, ama ne olduğundan emin değilim.
android geliştirici

2
Activityuzanır Contextçok emin değilim ne demek? Gerçekten daha fazla şey yapıyor olabilir, eğer ilgileniyorsanız, kaynak kodunu kontrol edin, kullanılabilir. Hiçbir ayrıntı bilmiyorum.
Nikolay Elenkov

ayy. ekran görüntüsünün metnini doğru okumadım. üzgünüm. Gösterdiğim şeyin üzerine geldiğinde, bunun bir parça olabileceğini söylüyor, ancak parçaların temaları hiçbir yere yazılmıyor, değil mi? Neyse, hala bu yeni özellik ne olduğundan emin değilim. merak ediyorum yeni google io bu konuda anlatacağım.
android geliştirici

25
bu özellikleri gösteren yeni bir video hazırladılar: youtube.com/…
android geliştirici


380

Bu öznitelik temel olarak mizanpajın üzerindeki "İlişkili Etkinlik" seçiminin kalıcılığıdır. Çalışma zamanında, bir düzen her zaman bir etkinlikle ilişkilendirilir. Elbette birden fazla, ancak en az biriyle ilişkilendirilebilir. Araçta, belirli özellikleri sürmek için bu eşlemeyi bilmeliyiz (çalışma zamanında diğer yönde gerçekleşir; bir etkinlik bir düzeni görüntülemek için setContentView (düzen) çağırabilir).

Şu anda, yalnızca bir şey için kullanıyoruz: Bir düzen için gösterilecek doğru temayı seçme (bildirim dosyası bir etkinlik için kullanılacak temaları kaydedebildiğinden ve düzenle ilişkili etkinliği bildiğimizde, düzen için gösterilecek doğru tema). Gelecekte bunu, eylem çubuğunu oluşturma (etkinlikle ilişkilendirilmiş), onClick işleyicileri eklemek için bir yer vb. Gibi ek özellikler sağlamak için kullanacağız.

Bunun bir araç olmasının nedeni: ad alanı niteliği, bunun yalnızca araç tarafından kullanılmak üzere bir tasarım zamanı eşlemesi olmasıdır. Düzenin kendisi birden fazla etkinlik / parça vb. Tarafından kullanılabilir. Size sadece doğru temayı gösterebileceğimiz bir tasarım zamanı bağlama seçmeniz için bir yol vermek istiyoruz; tıpkı liste görünümümüzü ve parça bağlarımızı vb. değiştirebildiğiniz gibi istediğiniz zaman değiştirebilirsiniz.

(Burada ilgili daha fazla ayrıntıya sahip tam değişiklik kümesi var bu )

Ve evet, yukarıda listelenen Nikolay bağlantısı , yeni yapılandırma seçicinin nasıl göründüğünü ve çalıştığını gösteriyor

Bir şey daha var: "Araçlar" ad alanı özeldir. Android paketleme aracı bunu görmezden gelmeyi bilir, bu nedenle bu özelliklerin hiçbiri APK'ya paketlenmez. Düzeni ek meta veriler için kullanıyoruz. Ayrıca, örneğin tiftik uyarılarını bastırmak için kullanılan özniteliklerin araç olarak saklandığı yerdir: yoksay.


Temel paketi yoksa etkinliğin tam yolunu nasıl bilir? manifest dosyasına bakıyor mu?
android geliştirici

2
Evet, manifest dosyasındaki etkinlik kayıtları ile aynı şekilde davranıyor; burada paketi name özelliğinde de atlayabilirsiniz. Gerekirse, bildirim bildirimini manifest dosyası kök öğesinden hazırlar.
Tor Norbye

Güzel . tüm bunlar (ve daha fazlası) google io 2012'de gösterilecek mi? yeni özellikleri duymak için sabırsızlanıyorum. :)
android geliştirici

1
Yeni bir proje için oluşturulan XML'de tools:contextdeğeri TextViewalana koyar . Bu, tüm düzene bir tema uygulamak için küresel bir kullanım örneği gibi göründüğünden, neden kök düzenine yerleştirilmez?
Jason Robinson

3
Mevcut araç özelliklerimizi belgeleyen bir belge ekledim: tools.android.com/tech-docs/tools-attributes
Tor

92

Göre Android Araçlar Proje Sitesi :

araçları: Bağlam

Bu öznitelik genellikle bir yerleşim XML dosyasındaki kök öğede ayarlanır ve mizanpajın hangi etkinlikle ilişkilendirildiğini kaydeder (belli bir düzen birden fazla düzen tarafından kullanılabileceği için tasarım zamanında). Bu, örneğin temalar Manifest'te tanımlandığı ve mizanpajlarla değil etkinliklerle ilişkilendirildiği için mizanpaj editörü tarafından varsayılan bir temayı tahmin etmek için kullanılacaktır. Tam uygulama paketi adı olmadan etkinlik sınıfını yalnızca önek olarak belirtmek için manifestlerdekiyle aynı nokta önekini kullanabilirsiniz.

<android.support.v7.widget.GridLayout
    xmlns:android="http://schemas.android.com/apk/res/android"    
    xmlns:tools="http://schemas.android.com/tools"
    tools:context=".MainActivity">  

Tarafından kullanılan: Studio & Eclipse, Lint'te düzen editörleri


14

1.Description

tools: context = "activity name"geçerli Mizanpaj dosya apkkümenizdeki ADTkarşılık gelen oluşturma bağlamında .Only Layout Editor içine paketlenmez , bağlamın oluşturulmasında geçerli Layout'unuzu etkinlik adının aktiviteye karşılık geldiğini gösterir manifest, ardından dosyadaki etkinlik bir Tema ayarlarsa, ADTDüzen Düzenleyici, geçerli Düzeninizi Temaya göre oluşturur.MainActivity Temaya göre oluşturur. Işık (öteki), görsel düzen yöneticisinde Tema'nın ne olacağının arka plan kontrolünü görürsünüz. Işık gibi görünüyor.Sadece ne gördüğünüzü göstermek için sonuç elde edersiniz.

Bazı insanlar bazılarını anlayacak, bazı insanlar bilmediğini görecek, birkaç açıklama ekleyeceğim:

2.Sample

Basit bir tools:text, örneğin, biraz daha görüntü, daha fazla anlamak için uyguntools:context

<TextView
    android:id="@+id/text1"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:text="sample name1" />

<TextView
    android:id="@+id/text2"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    tools:text="sample name2" />

resim açıklamasını buraya girin

TextView1 benimsenen android: textve kullanımı tools:textiçinde TextViewgösterecektir Düzen editörü sağ tarafında, 2 sample name1, sample name2, oluşturulan derlemek kod çalıştırdıktan sonra eğer iki yazı apksadece terminal ekranı sample name1, göstermez sample name2kelimeleri. Çalıştırmayı deneyebilir, etkisinin nasıl olduğunu görebilirsiniz.

3.Özel açıklama

1. tools: context = "activity name"içine paketlenmez apk(anlayış: bunun eşdeğeri yorumlanır, derlenmiş hiçbir etkisi.)

ADTGeçerli Düzen dosya kümesinde karşılık gelen oluşturma bağlamında yalnızca Düzen Düzenleyicisi (yani, simülatörün sağ tarafındaki yukarıdaki simge için), bağlamı oluştururken geçerli XML'nin Düzeni, etkinlik adı etkinliğe karşılık gelirse, manifest dosyasındaki etkinlik bir Tema ayarlar, ardından ADTDüzen Düzenleyicisi geçerli Düzeni MainActivityTemaya göre oluşturur. Işık da (diğer) olabilir. (Anladınız: tools: context = "activity name"XML düzeni belirtilen etkinliği oluşturuyor, manifest dosyasında bir Tema oluşturuyor, sağ simülatörünün üstünde resimde görülen Tema stili de Temaya karşılık gelen değişiklikleri takip edecektir.)

4.Özet

Özetle, bu özellikler temel olarak doğru araçların üstünde, simülatör hata ayıklama zamanı görüntüleme durumu ve derleme çalışmıyor,


7

“Tools: context”, geliştirme çerçevesinde XML'de mizanpaj oluşturmayı kolaylaştırabilecek Tasarım Özelliklerinden biridir. Bu öznitelik, mizanpajı uygulamak için hangi aktivite sınıfının seçildiğini geliştirme çerçevesine göstermek için kullanılır. “Araçlar: içerik” kullanarak, Android Studio önizleme için gerekli temayı otomatik olarak seçer.

Android uygulama geliştirme için diğer bazı özellikler ve kullanışlı araçlar hakkında daha fazla bilgi edinmek istiyorsanız, bu incelemeye göz atın: http://cases.azoft.com/4-must-know-tools-for-effective-android -development /


3

Bu en iyi çözümdür: https://developer.android.com/studio/write/tool-attributes

Bu, xml biçiminde etkinlik bağlamını ayarlayabileceğimiz tasarım nitelikleridir.

tools:context=".activity.ActivityName"

Adaptör:

tools:context="com.PackegaName.AdapterName"

resim açıklamasını buraya girin

İşaretli simgeye tıkladığınızda java sınıfına gidebilirsiniz ve araçların daha fazla özelliği vardır

tools:text=""
tools:visibility:""
tools:listItems=""//for recycler view 

etx


0

tools:context=".MainActivity" thisline bu xml dosyasına erişmek için hangi java kaynak dosyasının kullanıldığını gösteren xml dosyasında kullanılır. pertiküler java dosyaları için bu xml önizlemesini göster anlamına gelir.

Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.