অনুভূমিক লিনিয়ারলআউটে কীভাবে (উল্লম্ব) বিভাজক যুক্ত করবেন?


94

আমি একটি অনুভূমিক রৈখিক বিন্যাসে একটি বিভাজক যুক্ত করার চেষ্টা করছি কিন্তু কোথাও পাচ্ছি না। বিভাজকটি কেবল দেখায় না। আমি অ্যান্ড্রয়েড সহ মোট নবাগত।

এটি আমার লেআউট এক্সএমএল:

<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=".MainActivity" >

    <LinearLayout 
        android:layout_width="fill_parent"
        android:layout_height="wrap_content"
        android:id="@+id/llTopBar"
        android:orientation="horizontal"
        android:divider="#00ff00"
        android:dividerPadding="22dip"
        android:showDividers="middle"
       >

        <Button
            android:layout_width="wrap_content"
            android:layout_height="match_parent"
            android:text="asdf" />
            <Button
            android:layout_width="wrap_content"
            android:layout_height="match_parent"
            android:text="asdf"
             />

    </LinearLayout>

</RelativeLayout>

আপনি এটিকে Android এর কোন সংস্করণে চালাচ্ছেন? setDividerDrawable কেবলমাত্র এপিআই 11
অ্যালেক্স

জেলি শিম 4.2 এপিআই 17
আহমেদ-আনাস

আপনি যদি অন্য কিছুর চেষ্টা করে থাকেন তবে নিশ্চিত হয়ে নিন যে লিনিয়ারআলআউটের সঠিক ওরিয়েন্টেশন রয়েছে। অনুভূমিক দিকনির্দেশ সহ বিভাজকের জন্য উচ্চতা নির্ধারণ করা খুব বিভ্রান্তিকর হবে।
নিনো ভ্যান হুফ

4
ছদ্মবেশী SHOWDIVIDERS আইটেমটি ভুলে যাবেন না !!!!!!
ফ্যাটি

উত্তর:


222

অনুভূমিক বিভাজকের জন্য এটি ব্যবহার করুন

<View
    android:layout_width="1dp"
    android:layout_height="match_parent"
    android:background="@color/honeycombish_blue" />

এবং এটি উল্লম্ব বিভাজকের জন্য

<View
    android:layout_width="match_parent"
    android:layout_height="1dp"
    android:background="@color/honeycombish_blue" />

অথবা যদি আপনি অনুভূমিক বিভাজকের জন্য লিনিয়ারলআউট বিভাজক ব্যবহার করতে পারেন

<?xml version="1.0" encoding="utf-8"?>
<shape xmlns:android="http://schemas.android.com/apk/res/android" >
    <size android:height="1dp"/>
    <solid android:color="#f6f6f6"/>
</shape>

এবং লিনিয়ারলয়েটে

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:divider="@drawable/divider"
    android:orientation="vertical"
    android:showDividers="middle" >

আপনি যদি উল্লম্ব বিভাজক ব্যবহার করতে চান তবে android:height="1dp"আকারের ব্যবহারের জায়গায়android:width="1dp"

টিপ: কি ভুলবেন নাandroid:showDividers আইটেম।


4
ধন্যবাদ তবে কীভাবে আমি এটি "অ্যান্ড্রয়েড: বিভাজক" বৈশিষ্ট্যে যুক্ত করব? মূলত, আমি যা বোঝাতে চাইছি, প্রতিটি উপাদানগুলির মধ্যে বিভাজক যুক্ত করার জন্য কোনও ধরণের স্বয়ংক্রিয় উপায়? আমি বলতে চাইছি না কেন অ্যান্ড্রয়েড: বিভাজক বৈশিষ্ট্য আছে কেন?
আহমেদ-আনাস

@ মৃত্যু_রেলিক ০ অ্যান্ড্রয়েড: তালিকাভুক্ত, সম্প্রসারণযোগ্য তালিকাভিউ এবং ট্যাবউজেটের জন্য বিভাজক কার্যকর
পদ্মা কুমার

9
ধন্যবাদ, তবে তা এখানে কেন রয়েছে: এর বিকাশকারী.আন্ড্রয়েড.
আহমেদ-আনাস

দেখে মনে হচ্ছে আপনার রঙিন নয়, কোনও
আঁকাগুলি

7
দেখে মনে হচ্ছে আপনি নিজের layout_widthএবং layout_heightমানগুলি মিশ্রিত করেছেন: অনুভূমিক layout_widthহওয়া উচিত "fill_parent"এবং layout_heightহওয়া উচিত "1dp"। উল্লম্ব বিভাজকের জন্য একইভাবে অদলবদল করা উচিত।
জয় সিড্রি

69

এটি চেষ্টা করুন, res/drawableফোল্ডারে একটি বিভাজক তৈরি করুন :

উল্লম্ব_ডাইভাইডার_1.xml

<?xml version="1.0" encoding="utf-8"?>
<shape xmlns:android="http://schemas.android.com/apk/res/android">    
    <size android:width="1dip" />
    <solid android:color="#666666" />    
</shape> 

এবং dividerলিনিয়ারলআউটটিতে এই জাতীয় বৈশিষ্ট্যটি ব্যবহার করুন :

<LinearLayout
    android:layout_width="match_parent"
    android:layout_height="48dp"
    android:orientation="horizontal"
    android:divider="@drawable/vertical_divider_1"
    android:dividerPadding="12dip"
    android:showDividers="middle"
    android:background="#ffffff" >

    <Button
        android:id="@+id/button1"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="Button" />
    <Button
        android:id="@+id/button2"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="Button" />

</LinearLayout>

বিঃদ্রঃ: android:divider কেবলমাত্র অ্যান্ড্রয়েড 3.0 (এপিআই স্তর 11) বা তার চেয়ে বেশি ক্ষেত্রে উপলভ্য।


তবে এটি কেবল একটি বিভাজক যুক্ত করবে .. ধরুন আমার কাছে 10 টির মতো উপাদান রয়েছে, প্রতিটি উপাদানগুলির মধ্যে একটি বিভাজকের জন্য অতিরিক্ত কোড যুক্ত করা বর্জ্যের মতো মনে হয়
আহমেদ-আনাস

@ death_relic0 আপনি কেন ডিভাইডারের জন্য পৃথক বিন্যাস তৈরি করেন না এবং তারপরে যেকোন সময় এবং যতবার আপনি চান যোগ করার জন্য অন্তর্ভুক্ত ট্যাগটি ব্যবহার করেন না। আমি মনে করি এটি আমার আরও ভাল হবে এবং কোনও অপচয় হবে না।
GRIsHu

40

বিন্যাসে বিভাজক যুক্ত করা সহজ, আমাদের আলাদা ভিউ দরকার নেই।

<LinearLayout
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    android:layout_alignParentBottom="true"
    android:divider="?android:listDivider"
    android:dividerPadding="2.5dp"
    android:orientation="horizontal"
    android:showDividers="middle"
    android:weightSum="2" ></LinearLayout>

উপরের কোডটির জন্য উল্লম্ব বিভাজক তৈরি করুন LinearLayout


আমি সর্বদা শো ডিভিডার্স বৈশিষ্ট্যটি ভুলে যাই। ধন্যবাদ!
অজানাবার্ডো

4
টিপটি ব্যবহারের জন্য ধন্যবাদ? অ্যান্ড্রয়েড: listDivider। আমি কেবল লক্ষ্য করেছি যে এটি 21 বা ততোধিকের এপিআইতে অদৃশ্য। নীচের এপিআই সংস্করণগুলিতে একটি ছোট ধূসর লাইন দেখানো হয়েছে
user114676

@ কেটান মেহেতা আমরা এটি 'অ্যান্ড্রয়েড: বিভাজক' বৈশিষ্ট্য সহ এটি সংজ্ঞায়িত করব, এটি অঙ্কনীয় বা রঙিন।
খাই এনগুইন

অ্যান্ড্রয়েড: ডিভাইডার এপিআই 15 + কে সমর্থন করে?
RoCk RoCk

17

আপডেট: অ্যাপকম্প্যাট ব্যবহার করে প্রাক হানিকম্ব

আপনি যদি অ্যাপকম্প্যাট লাইব্রেরি v7 ব্যবহার করছেন তবে আপনি এটি ব্যবহার করতে পারেন LinearLayoutCompat । এই পদ্ধতির ব্যবহার করে আপনি অ্যান্ড্রয়েড ২.১, ২.২ এবং ২.৩ এ অঙ্কনযোগ্য ডিভাইডার ব্যবহার করতে পারেন।

উদাহরণ কোড:

<android.support.v7.widget.LinearLayoutCompat
        xmlns:app="http://schemas.android.com/apk/res-auto"
        android:layout_width="fill_parent"
        android:layout_height="wrap_content"
        android:orientation="horizontal"
        app:showDividers="middle"
        app:divider="@drawable/divider">

অঙ্কনযোগ্য / ডিভাইডার.এক্সএমএল: (উপরে এবং নীচে কিছু প্যাডিং সহ বিভাজক)

<?xml version="1.0" encoding="UTF-8"?>
<inset xmlns:android="http://schemas.android.com/apk/res/android"
        android:insetBottom="2dp"
        android:insetTop="2dp">
    <shape>
        <size android:width="1dp" />
        <solid android:color="#FFCCCCCC" />
    </shape>
</inset>

খুব গুরুত্বপূর্ণ নোট:LinearLayoutCompat দৃশ্য প্রসারিত না LinearLayoutএবং তজ্জন্য আপনি ব্যবহার করা উচিত নয় android:showDividersবা android:dividerবৈশিষ্ট্য কিন্তু কাস্টম বেশী: app:showDividersএবং app:divider। কোড আপনিও ব্যবহার LinearLayoutCompat.LayoutParamsনা করা উচিত LinearLayout.LayoutParams!


কোনও বিভাজকটিতে উল্লম্ব প্যাডিং যুক্ত করার একমাত্র উপায়?
সরোস

4
@ সরোজ না, আপনি সর্বদা একটি কাস্টম ভিউ তৈরি করতে বা বিদ্যমান ভিউ উপাদানগুলিতে হ্যাক করতে পারেন। এটি এটি করতে ডিফল্ট এবং পছন্দসই পদ্ধতি।
রল্ফ ツ

8

আমি আজ একই সমস্যার মধ্যে দৌড়েছি। পূর্ববর্তী উত্তরগুলি ইঙ্গিত হিসাবে, সমস্যাটি অঙ্কনযোগ্য না হয়ে ডিভাইডার ট্যাগে রঙ ব্যবহার করা থেকে উদ্ভূত হয়েছিল। যাইহোক, আমার নিজস্ব অঙ্কনযোগ্য এক্সএমএল লেখার পরিবর্তে, আমি থিমযুক্ত বৈশিষ্ট্যগুলিকে যথাসম্ভব ব্যবহার করতে পছন্দ করি। আপনি অ্যান্ড্রয়েড: অ্যাটর / ডিভাইডারহরাইজেন্টাল এবং অ্যান্ড্রয়েড ব্যবহার করতে পারেন: পরিবর্তে পূর্বনির্ধারিত অঙ্কনযোগ্য পেতে অ্যাটর / ডিভাইডার ভার্টিকাল:

<LinearLayout
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:showDividers="middle"
    android:divider="?android:attr/dividerVertical"
    android:orientation="horizontal">
    <!-- other views -->
</LinearLayout>

বৈশিষ্ট্যগুলি এপিআই 11 এবং উপরেরগুলিতে উপলব্ধ।

এছাড়াও, যেমনটি তার উত্তরে বোসকোম দ্বারা উল্লেখ করা হয়েছে, ডিভাইডারপ্যাডিং সম্পত্তি উল্লম্ব বিভাজকের উভয় পাশের অতিরিক্ত প্যাডিং যুক্ত করে না, কারণ কেউ ধরে নিতে পারে। পরিবর্তে এটি শীর্ষ এবং নীচের প্যাডিং সংজ্ঞায়িত করে এবং এটি খুব বড় হলে বিভাজকটি কেটে যেতে পারে।


6

আপনি বিল্ট ইন বিভাজক ব্যবহার করতে পারেন, এটি উভয় অভিমুখের জন্য কাজ করবে।

<LinearLayout
  android:layout_width="match_parent"
  android:layout_height="match_parent"
  android:divider="?android:attr/listDivider"
  android:orientation="horizontal"
  android:showDividers="middle">

3

হতাশাজনকভাবে, আপনাকে আপনার কার্যকলাপে কোড থেকে বিভাজকগুলি সক্ষম করতে হবে enable উদাহরণ স্বরূপ:

protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);

    // Set the view to your layout
    setContentView(R.layout.yourlayout);

    // Find the LinearLayout within and enable the divider
    ((LinearLayout)v.findViewById(R.id.llTopBar)).
        setShowDividers(LinearLayout.SHOW_DIVIDER_MIDDLE);

}

যদিও এটি করার অন্য উপায়, এটির কোনও প্রয়োজন নেই।
রিকার্ডো এ। 18

2

আপনার ডিভাইডারটি খুব বেশি ডিভাইডারপ্যাডিংয়ের কারণে প্রদর্শিত হচ্ছে না। আপনি 22dip সেট করেছেন, তার মানে ডিভাইডার উপরের দিক থেকে 22 ডিপ এবং নীচে থেকে 22 ডিপ দ্বারা কেটে গেছে। যদি আপনার লেআউটের উচ্চতা 44 ডিপ থেকে কম বা সমান হয় তবে কোনও বিভাজক দৃশ্যমান নয়।


1

কপিল ভ্যাটসের উত্তর যদি এইরকম কিছু চেষ্টা করে না:

অঙ্কনযোগ্য / ডিভাইডার_হরিজন্টাল_গ্রিন_22.xML

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

    <size android:width="22dip"/>
    <solid android:color="#00ff00"/>

</shape>

বিন্যাস / your_layout.xML

LinearLayout 
            android:layout_width="fill_parent"
            android:layout_height="wrap_content"
            android:id="@+id/llTopBar"
            android:orientation="horizontal"
            android:divider="@drawable/divider_horizontal_green_22"
            android:showDividers="middle"
           >

আমি একটি সমস্যার মুখোমুখি হয়েছি যেখানে প্যাডিং বৈশিষ্ট্যটি কাজ করছে না, সুতরাং আমাকে সরাসরি ডিভাইডারে উচ্চতা নির্ধারণ করতে হয়েছিল।

বিঃদ্রঃ:

আপনি যদি এটিটি উল্লম্ব লিনিয়ারলাইআউটে ব্যবহার করতে চান তবে এটির মতো একটি নতুন তৈরি করুন: অঙ্কনযোগ্য / ডিভাইডার_আর্টিকাল_গ্রিন_22.xML

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

    <size android:height="22dip"/>
    <solid android:color="#00ff00"/>

</shape>

0

আঁকতে পেতে, বিভাজকের LinearLayoutকিছু উচ্চতা থাকতে হবে ColorDrawable(যা মূলত #00ff00পাশাপাশি অন্য কোনও হার্ডকোডযুক্ত রঙের নেই)। এটি সমাধানের সহজ (এবং সঠিক) উপায় হ'ল আপনার রঙকে Drawableপূর্বনির্ধারিত উচ্চতার মতো shapeকিছুতে আঁকানো , যেমন আঁকারযোগ্য


-1

টেক্সটভিউ বা ইমেজভিউয়ের মতো বিভাজনের জন্য আপনাকে যে কোনও ভিউ তৈরি করতে হবে তারপরে পটভূমিটি সেট করুন যদি আপনার অন্য কোনও চিত্র ব্যাকগ্রাউন্ড হিসাবে রঙ ব্যবহার করে।

আশা করি এটি আপনাকে সহায়তা করবে।

আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.