Android विचारों के बीच एक क्षैतिज रेखा खींचता है


105

मेरा लेआउट नीचे की तरह है:

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

<TextView
        android:id="@+id/textView1"
        style="@style/behindMenuItemLabel"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_marginTop="10dp"
        android:text="Twitter Feeds"
        android:textStyle="bold" />

    <ListView
        android:id="@+id/list"
        android:layout_width="350dp"
        android:layout_height="50dp" />

    <TextView
        android:id="@+id/textView1"
        style="@style/behindMenuItemLabel1"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_marginTop="1dp"
        android:text="FaceBook Feeds" />

    <ListView
        android:id="@+id/list1"
        android:layout_width="350dp"
        android:layout_height="50dp" />

</LinearLayout>

मेरी आवश्यकता के बीच एक क्षैतिज रेखा खींचना है TextViewऔरListView

क्या कोई मदद कर सकता है?


आप मौजूदा दृश्य की पृष्ठभूमि में रेखा जोड़ सकते हैं और अतिरिक्त जोड़ नहीं सकते। या आप अपने सभी विचारों को listView के अंदर रख सकते हैं। listView से विभाजक आकर्षित कर सकते हैं। सबसे सरल तरीके अतिरिक्त दृश्य जोड़ना है।
लियोनिदोस

जवाबों:


285

यह के बीच चांदी ग्रे रंग का लाइन आकर्षित करेगा TextViewऔरListView

<TextView
    android:id="@+id/textView1"
    style="@style/behindMenuItemLabel1"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:layout_marginTop="1dp"
    android:text="FaceBook Feeds" />

<View
    android:layout_width="match_parent"
    android:layout_height="2dp"
    android:background="#c0c0c0"/>

<ListView
    android:id="@+id/list1"
    android:layout_width="350dp"
    android:layout_height="50dp" />

10
यह हार्डकोड कलर किसी वेबपेज में इनलाइन css का उपयोग करने जैसा है। यह इतना मतदान क्यों है? यह उदाहरण के लिए, android: background = "का उपयोग करना चाहिए? Android: attr / डिवाइडर क्षैतिज"।
Roel

4
क्योंकि इसे लागू करना आसान है
डेनी

1
@ रील यह सरल, आसान है और यह काम करता है। और यह एक रंग का संदर्भ देने के लिए सीधा है जिसमें यह हार्डकोडिंग है। मैंने आपके सुझाव की कोशिश की, जो मुझे लगता है कि तकनीकी रूप से बेहतर होगा, लेकिन यह काम नहीं करता था - मुझे अपने लेआउट में कोई भी डिवाइडर नहीं मिला। मुझे इसका उपयोग कैसे करना चाहिए? धन्यवाद।
nsandersen

23

आपको Spaceडिवाइडर बनाने के लिए नए हल्के दृश्य का उपयोग करना चाहिए । यदि आप Spaceइसके बजाय उपयोग करेंगे तो आपका लेआउट तेज़ी से लोड होगा View

क्षैतिज विभक्त:

<android.support.v4.widget.Space
        android:layout_height="1dp"
        android:layout_width="match_parent" /> 

कार्यक्षेत्र विभक्त:

<android.support.v4.widget.Space
        android:layout_height="match_parent"
        android:layout_width="1dp" />

आप एक पृष्ठभूमि भी जोड़ सकते हैं:

<android.support.v4.widget.Space
        android:layout_height="match_parent"
        android:layout_width="1dp"
        android:background="?android:attr/listDivider"/>

उपयोग उदाहरण:

....
<TextView
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:text="One"/>

<android.support.v4.widget.Space
    android:layout_height="match_parent"
    android:layout_width="1dp"
    android:background="?android:attr/listDivider"/>

<TextView
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:text="Two"/>

<android.support.v4.widget.Space
    android:layout_height="match_parent"
    android:layout_width="1dp"
    android:background="?android:attr/listDivider"/>

<TextView
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:text="Three"/>
....

उपयोग करने के लिए Spaceआपको अपने build.gradle में निर्भरता को जोड़ना चाहिए :

dependencies {
    compile 'com.android.support:support-v4:22.1.+'
}

प्रलेखन https://developer.android.com/reference/android/support/v4/widget/Space.html


11
का उपयोग Spaceनिराशाजनक होने वाला Spaceहै क्योंकि कुछ भी नहीं (यहां तक ​​कि एक पृष्ठभूमि भी नहीं है)। स्क्रीन पर जगह लेना एकमात्र काम है। इसका समाधान Viewइसके बजाय एक वेनिला तत्व का उपयोग करना है। फिर पृष्ठभूमि वांछित के रूप में तैयार की जाएगी। (यदि आप अन्यथा आवश्यक नहीं हैं तो आप समर्थन पुस्तकालय निर्भरता से भी बच सकते हैं।)
टेड हॉप

6
Spaceसे विरासत में मिला है Viewऔर इसलिए यह सभी विशेषताओं को परिभाषित करता है View। (इसी प्रकार, विशेषता को LinearLayoutविरासत में मिला, textAlignmentभले ही वह स्वयं कोई पाठ प्रदर्शित न करता हो।) खुद के लिए यह परीक्षण करने के लिए स्वतंत्र महसूस करें (या सिर्फ स्रोत कोड देखें) और आप पाएंगे कि Spaceसभी ड्राइंग-संबंधी विशेषताओं को अनदेखा करता है।
टेड होप

हां, Spaceकोई पृष्ठभूमि नहीं बनाता है, यह पारदर्शी है।
वोवहॉस्ट

21

अपने लेआउट में कुछ इस तरह जोड़ें कि आप जो विचार अलग करना चाहते हैं:

  <View
       android:id="@+id/SplitLine_hor1"
       android:layout_width="match_parent"
       android:layout_height= "2dp"
       android:background="@color/gray" />

आशा करता हूँ की ये काम करेगा :)


2
यह एक लंबवत रेखा खींचेगा क्योंकि इसकी ऊंचाई माचिस है_परेंट और चौड़ाई केवल 2 डीपी है।
भूमिका ब्रह्मभट्ट

14

इसे एक बार बनाना और जहाँ आवश्यकता हो उसका उपयोग करना एक अच्छा विचार है। इसे अपनी शैलियों में जोड़ें। xml:

<style name="Divider">
    <item name="android:layout_width">match_parent</item>
    <item name="android:layout_height">1dp</item>
    <item name="android:background">?android:attr/listDivider</item>
</style>

और इसे अपने xml कोड में जोड़ें, जहाँ एक लाइन डिवाइडर की जरूरत है:

<View style="@style/Divider"/>

मूल रूप से इस सवाल का जवाब toddles_fp ने दिया: Android ड्रॉइंग सेपरेटर / लेआउट में डिवाइडर लाइन?



6
<View
       android:id="@+id/view"
       android:layout_width="match_parent"
       android:layout_height="2dp"
       android:background="#000000" />

क्या हम इस तत्व को प्रोग्रामिक रूप से एक्सेस नहीं कर सकते हैं?
गमरु

2

आप इस दृश्य को लाइन की नकल करने के लिए अपने विचारों के बीच रख सकते हैं

<View
  android:layout_width="fill_parent"
  android:layout_height="2dp"
  android:background="#c0c0c0"/>

2

मेरे लिए यह काम करने की कोशिश करो

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

1

प्रत्येक माता-पिता LinearLayoutमें जिसके लिए आप घटकों के बीच डिवाइडर चाहते हैं, जोड़ें android:divider="?android:dividerHorizontal"याandroid:divider="?android:dividerVertical

अपने बीच के उन्मुखीकरण के अनुसार उनके बीच उपयुक्त चुनें LinearLayout

जब तक मुझे पता है, यह संसाधन शैली एंड्रॉइड 4.3 से जोड़ी गई है।



0

एक दृश्य जिसका पृष्ठभूमि रंग आप निर्दिष्ट कर सकते हैं (ऊंचाई = कुछ डीपीआई)। वास्तविक कोड में देखा गया है और यहाँ यह है:

        <LinearLayout
            android:id="@+id/lineA"
            android:layout_width="fill_parent"
            android:layout_height="2dp"
            android:background="#000000" />

ध्यान दें कि यह किसी भी तरह का हो सकता है View


0

----> सरल है

 <TextView
    android:layout_width="match_parent"
    android:layout_height="1dp"
    android:background="#c0c0c0"
    android:id="@+id/your_id"
    android:layout_marginTop="160dp" />

0

यदि आप केवल अंडरलाइन के लिए एक अतिरिक्त दृश्य का उपयोग नहीं करना चाहते हैं। इस शैली को अपने पर जोड़ें textView

style="?android:listSeparatorTextViewStyle"

बस नीचे की तरफ है, जैसे अतिरिक्त गुण जोड़ देगा

android:textStyle="bold"
android:textAllCaps="true"

जिसे आप आसानी से ओवरराइड कर सकते हैं।

हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.