ইন্টেলিজ আইডিইএ / অ্যান্ড্রয়েড স্টুডিওতে একত্রীকরণের মূল ট্যাগ সহ পূর্বরূপ বিন্যাস


158

আসুন কল্পনা করুন আমরা লিনিয়ারলআউট এর উপর ভিত্তি করে যৌগিক উপাদান বিকাশ করছি। সুতরাং, আমরা এর মতো ক্লাস তৈরি করি:

public class SomeView extends LinearLayout {
    public SomeView(Context context, AttributeSet attrs) {
        super(context, attrs);

        setOrientation(LinearLayout.VERTICAL);
        View.inflate(context, R.layout.somelayout, this);
    }
}

আমরা যদি এর LinearLayoutমূল হিসাবে ব্যবহার করব somelayout.xml, আমাদের কাছে অতিরিক্ত দেখার স্তর থাকবে, সুতরাং আমরা মার্জ ট্যাগটি ব্যবহার করব:

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

    <TextView
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="Some text"
        android:textSize="20sp"/>

    <TextView
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="Some other text"/>
</merge>

তবে আইডিইতে থাকা প্রাকদর্শন ট্যাবে মার্জ সর্বদা ফ্রেমলআউট হিসাবে কাজ করে এবং আমরা এরকম কিছু দেখতে পাব: একত্রীকরণের সাথে পূর্বরূপ দেখুন

(এটি অ্যান্ড্রয়েড স্টুডিও, ইন্টেলিজ আইডিইএ ঠিক একই রকম, আমি জানি না যে গ্রহন সম্পর্কে)

পূর্বরূপটি লেআউটকে অনেক বেশি বিকাশের গতি বাড়ায়, কিছু লেআউট এমনকি এমনকি এত বড় সহায়তা হ'ল দুঃখজনক। নির্দিষ্ট করার কোনও উপায় থাকতে পারে, পূর্বরূপটি কীভাবে mergeনির্দিষ্ট বিন্যাসে ট্যাগটি ব্যাখ্যা করে?


1
আমি এই সমর্থনটি পাশাপাশি যুক্ত দেখতে চাই।
ক্রিস্টোফার পেরি

এটি সরঞ্জামের বৈশিষ্ট্য দ্বারা ভবিষ্যতে কিছুটা সময় সমাধানযোগ্য হতে পারে। কোড.google.com/p/android/issues/detail?id=61652
জোনাস

উত্তর:


352

একটি নতুন প্যারেন্টট্যাগ সরঞ্জাম বৈশিষ্ট্য রয়েছে ( অ্যান্ড্রয়েড স্টুডিও ২.২ এ যুক্ত ) যা আপনি মার্জ ট্যাগের জন্য লেআউট প্রকারটি নির্দিষ্ট করতে ব্যবহার করতে পারেন যা লেআউটটি সম্পাদনা পূর্বরূপে লেআউটটিকে সঠিকভাবে রেন্ডার করে তুলবে।

সুতরাং আপনার উদাহরণ ব্যবহার করে:

<merge 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:parentTag="LinearLayout"
    tools:orientation="horizontal">

    <TextView
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="Some text"
        android:textSize="20sp"/>

    <TextView
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="Some other text"/>
</merge>

দ্রষ্টব্য : সম্পাদকে বিন্যাসটি সঠিকভাবে প্রদর্শনের জন্য android:layout_widthএবং উভয়ই android:layout_heightনির্দিষ্ট করতে হবে।


1
আপনি যখন অন্য লেআউট ফাইলে আপনার কাস্টম ভিউ ট্যাগ যুক্ত করেন তখন কেউ কীভাবে পূর্বরূপটি সঠিকভাবে প্রদর্শন করবেন তা জানেন? <com.yourpackage.yourcustomview id="@+id/my_cust_view" android:layout_width="match_parent" android:layout_height="match_parent"/>
Arst

1
ভিজ্যুয়াল পার্থক্য দেখুন Raw.githubusercontent.com/nisrulz/android-tips-tricks/develop/…
জার ই আহমের

2
যেহেতু আপনি সরঞ্জামগুলি ব্যবহার করছেন আপনি পাশাপাশি সরঞ্জামগুলিও ব্যবহার করতে পারেন: লেআউট_উইট = "ম্যাচ_পিতা"
কুতিকো

পারফেক্ট! ধন্যবাদ। +1
কারসন জে

66

সম্পাদনা: পুরানো উত্তর। স্টারকেজ 2 এর উত্তর দেখুন।


অ্যান্ড্রয়েড স্টুডিও 0.5.8 সরঞ্জামগুলির জন্য সমর্থন যুক্ত করেছে: শোইন। এটি ব্যবহার করে <মার্জ> লেআউটগুলির পূর্বরূপ নেওয়া সম্ভব।

http://tools.android.com/recent/androidstudio058released

সরঞ্জামগুলি সহ বিন্যাস / বিন্যাস_সম্পূর্ণ.এক্সএমএল: শোইন:

<merge xmlns:android="http://schemas.android.com/apk/res/android"
   xmlns:custom="http://schemas.android.com/apk/res-auto"
   xmlns:tools="http://schemas.android.com/tools"
   tools:showIn="@layout/simple_relativelayout">

......

</merge>

এর সাথে লেআউট / সরল_ সম্পর্কিত সম্পর্কিতআউট.এক্সএমএল অন্তর্ভুক্ত:

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

    <include layout="@layout/layout_merge"/>

</RelativeLayout>

14
ভাল খবর! যৌগিক উপাদানগুলির জন্য খুব সহজ নয়, কারণ আমাদের কেবলমাত্র পূর্বরূপের জন্য অতিরিক্ত লেআউট যুক্ত করতে হবে। তবে কিছুই চেয়ে ভাল।
দরজা 12'14

অনুরূপ কিছু সম্পর্কিত কোনও ধারণাগুলি কি গ্রহনটিতে সমর্থিত?
টোগুয়ার্ড

3
: আপনি একটি টিকিট অনুসরণ করতে পারেন, একটি Google বিকাশকারীর এখানে দ্বারা রিপোর্ট code.google.com/p/android/issues/detail?id=61652
Neige

আমি প্যাডিংয়ের মতো প্রোগ্রামের ভিত্তিতে রুট ভিউতে (এই ক্ষেত্রে রিলেটিভলআউট) কিছু বৈশিষ্ট্য সেট করি। অবশ্যই তারা এই সহায়ক লেআউটে প্রয়োগ করা হয়নি (কারণ আপনি সম্পূর্ণ অন্য মতামত ব্যবহার করেন)। একমাত্র সমাধান হ'ল সহায়ক বিন্যাসে সম্পূর্ণ কাস্টম ভিউটি ব্যবহার করা।
ফেলিক্স এডেলম্যান

পুরানো নয় যখন আপনি জেনেরিক দেখাতে চান না তখন এটি ব্যবহার করা যেতে পারে
amorenew

-5

পছন্দ মত একত্রিত করার পরিবর্তে পিতামাতার হিসাবে কাস্টম ক্লাস ব্যবহার করা সম্ভব

<com.mycompany.SomeView xmlns:android="http://schemas.android.com/apk/res/android">
...
</com.mycompany.SomeView>

এবং তারপরে এই লেআউটটিকে সরাসরি স্ফীত করুন এবং ফলাফল দেখুনটিতে castালাই করুন SomeView। অ্যান্ড্রয়েড স্টুডিওগুলি সরাসরি অভিভাবক শ্রেণীর চেক করবে SomeViewএবং এর মতো প্রাকদর্শন পরিচালনা করবে LinerLayout। দ্বারা দর্শনগুলি আবদ্ধ করতে আপনি onFinishInflate()পদ্ধতিটি ব্যবহার করতে পারেন । এই সমাধানটির সুবিধা হ'ল আপনি সমস্ত লেআউট সংজ্ঞা বা স্টাইল সংজ্ঞা সরাসরি লেআউট ফাইলটিতে রাখতে পারেন, আপনি কোডের মতো পদ্ধতি ব্যবহার করতে পারবেন না ।SomeViewfindViewById()setOrientation()


2
এটি পূর্ববর্তী অ্যান্ড্রয়েড স্টুডিওকে চিরতরে স্তব্ধ করে দেওয়ার জন্য পূর্বরূপ দেখার চেষ্টা করার সময় একটি অসীম পুনরাবৃত্তি এবং স্ট্যাকের ওভারফ্লোগুলি প্রবর্তিত করে।
মাটো
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.