खोज…


परिचय

कोटलिन में एंड्रॉइड के लिए एक अंतर्निर्मित दृश्य इंजेक्शन है, जो मैनुअल बाइंडिंग को छोड़ देता है या बटरकनीफ़ जैसे फ्रेमवर्क की आवश्यकता होती है। कुछ फायदे एक अच्छे वाक्यविन्यास, बेहतर स्थैतिक टाइपिंग और इस तरह कम त्रुटि वाले हैं।

विन्यास

ठीक से कॉन्फ़िगर की गई प्रोजेक्ट के साथ प्रारंभ करें।

अपने प्रोजेक्ट-लोकल (टॉप-लेवल नहीं) build.gradle अपने build.gradle प्लगइन के नीचे एक्स्टेंशन एक्सटेंशन प्लगइन डिक्लेरेशन, टॉप-लेवल इंडेंटेशन लेवल पर।

buildscript {
    ...
}

apply plugin: "com.android.application"
...
apply plugin: "kotlin-android"
apply plugin: "kotlin-android-extensions"
...

दृश्यों का उपयोग करना

यह मानते हुए कि हमारे पास एक गतिविधि है जिसका उदाहरण लेआउट है, जिसे activity_main.xml कहा जाता activity_main.xml :

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="match_parent"
    android:layout_height="match_parent">

    <Button
        android:id="@+id/my_button"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="My button"/>
</LinearLayout>

हम बिना किसी अतिरिक्त बंधन के बटन को कॉल करने के लिए कोटलिन एक्सटेंशन का उपयोग कर सकते हैं:

import kotlinx.android.synthetic.main.activity_main.my_button

class MainActivity: Activity() {
    override fun onCreate(savedInstanceBundle: Bundle?) {
        super.onCreate(savedInstanceBundle)
        setContentView(R.layout.activity_main)
        // my_button is already casted to a proper type of "Button"
        // instead of being a "View"
        my_button.setText("Kotlin rocks!")
    }
}

आप लेआउट में दिखाई देने वाली सभी आईडी को * नोटेशन से भी आयात कर सकते हैं

// my_button can be used the same way as before
import kotlinx.android.synthetic.main.activity_main.*

कृत्रिम विचारों का उपयोग गतिविधियों के बाहर नहीं किया जा सकता / टुकड़े / उस दृश्य के साथ दृश्य फुलाया जाता है:

import kotlinx.android.synthetic.main.activity_main.my_button

class NotAView {
    init {
        // This sample won't compile!
        my_button.setText("Kotlin rocks!")
    }
}

उत्पाद जायके

एंड्रॉइड एक्सटेंशन कई एंड्रॉइड प्रोडक्ट फ्लेवर के साथ भी काम करते हैं। उदाहरण के लिए अगर हम build.gradle में जायके की तरह है:

android {
    productFlavors {
        paid {
            ...
        }
        free {
            ...
        }
    }
}

और उदाहरण के लिए, केवल नि: शुल्क स्वाद में एक खरीद बटन है:

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="match_parent"
    android:layout_height="match_parent">

    <Button
        android:id="@+id/buy_button"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="Buy full version"/>
</LinearLayout>

हम विशेष रूप से स्वाद के लिए बाध्य कर सकते हैं:

import kotlinx.android.synthetic.free.main_activity.buy_button

नोटिस पाने के लिए दर्द निवारक श्रोता, जब दृश्य पूरी तरह से तैयार हो गया है तो कोटलिन के विस्तार के साथ इतना सरल और भयानक है

mView.afterMeasured {
  // inside this block the view is completely drawn
  // you can get view's height/width, it.height / it.width
}

हुड के नीचे

inline fun View.afterMeasured(crossinline f: View.() -> Unit) {
viewTreeObserver.addOnGlobalLayoutListener(object : ViewTreeObserver.OnGlobalLayoutListener {
    override fun onGlobalLayout() {
        if (measuredHeight > 0 && measuredWidth > 0) {
            viewTreeObserver.removeOnGlobalLayoutListener(this)
            f()
        }
    }
})
}


Modified text is an extract of the original Stack Overflow Documentation
के तहत लाइसेंस प्राप्त है CC BY-SA 3.0
से संबद्ध नहीं है Stack Overflow