Android, görünümler arasında Yatay bir çizgi çizer


105

Düzenim aşağıdaki gibi var:

<?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>

Benim Gereği bir çekmektir Yatay çizgi arasındaki TextViewveListView

Biri yardım edebilir mi?


Mevcut görünümlerin arka planına satır ekleyebilir ve fazladan bir tane ekleyemezsiniz. Veya tüm görünümlerinizi listView içine yerleştirebilirsiniz. listView ayırıcılar çizebilir. en basit yol, ekstra görünüm eklemektir.
Leonidos

Yanıtlar:


285

TextView& Arasında Gümüş gri renkli Çizgi çizecektir.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
Bu kodlanmış renk, bir web sayfasında satır içi css kullanmak gibidir. Bu neden bu kadar çok oylandı? Örneğin, android: background = "? Android: attr / dividerHorizontal" kullanmalıdır.
Roel

4
Uygulaması kolay olduğu için
Denny

1
@Roel Basit, kolay ve işe yarıyor. Ve bir rengi kodlamak yerine ona referans vermek kolaydır. Teknik olarak daha iyi olacağını düşündüğüm önerinizi denedim, ancak işe yaramadı - düzenlerimde herhangi bir bölücü almadım. Nasıl kullanmalıyım? Teşekkür ederim.
nsandersen

23

SpaceBölücüler çizmek için yeni hafif Görünümü kullanmalısınız . SpaceBunun yerine kullanacaksanız düzeniniz daha hızlı yüklenecektir View.

Yatay bölücü:

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

Dikey bölücü:

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

Ayrıca bir arka plan da ekleyebilirsiniz:

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

Kullanım örneği:

....
<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"/>
....

Kullanmak için Spacesizin de bağımlılık eklemek gerekir sizi build.gradle :

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

Belgeler https://developer.android.com/reference/android/support/v4/widget/Space.html


11
Kullanımı Spacehayal kırıklığı yaratacak çünkü Spacehiçbir şey çizmiyor (arka plan bile değil). Tek işi ekranda yer kaplamaktır. Çözüm, Viewbunun yerine bir vanilya elemanı kullanmaktır. Ardından arka plan istenildiği gibi çizilecektir. (Ayrıca, başka türlü gerekli değilse, destek kitaplığı bağımlılığından da
kurtulabilirsiniz

6
Spacemiras alır Viewve bu nedenle tarafından tanımlanan tüm öznitelikleri miras alır View. (Benzer şekilde, kendisi herhangi bir metni göstermese bile özniteliği LinearLayoutmiras alır textAlignment.) Bunu kendiniz için test etmekten çekinmeyin (veya sadece kaynak koduna bakın) ve Spacea'nın çizimle ilgili tüm öznitelikleri göz ardı ettiğini göreceksiniz .
Ted Hopp

Evet, Spacearka plan çizmez, şeffaftır.
vovahost

21

Ayırmak istediğiniz görünümler arasına mizanpajınızda buna benzer bir şey ekleyin:

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

Umarım yardımcı olur :)


2
Yüksekliği match_parent ve genişliği sadece 2 dp olduğu için Dikey bir çizgi çizecektir.
Bhoomika Brahmbhatt

14

Bir kez oluşturmak ve ihtiyaç duyulan her yerde kullanmak iyi bir fikirdir. Bunu styles.xml dosyanıza ekleyin:

<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>

ve bunu, satır bölücünün gerekli olduğu xml kodunuza ekleyin:

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

Başlangıçta bu soruya Todd tarafından cevap verildi: Android Çizim Ayırıcı / Ayırıcı Çizgi Düzeni


9

Bunu dene

<View
    android:layout_width="match_parent"
    android:layout_height="2dp"
    android:background="?android:attr/listDivider"/>

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

bu öğeye programlı olarak erişemez miyiz?
gumuruh

2

Çizgiyi taklit etmek için bu görüşü görüşlerinizin arasına koyabilirsiniz.

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

2

Bunun benim için çalıştığını dene

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

1

LinearLayoutBileşenler arasında bölücüler olmasını istediğiniz her ebeveynde , ekleyin android:divider="?android:dividerHorizontal"veyaandroid:divider="?android:dividerVertical .

Yönünüze göre aralarında uygun olanı seçin LinearLayout.

Bildiğim kadarıyla bu kaynak stili Android 4.3'ten eklendi.


1

Bunu dene

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

0

Arka plan rengini belirleyebileceğiniz bir Görünüm (yükseklik = birkaç dpi). Gerçek kodla bakıldı ve işte:

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

Herhangi bir tür olabileceğini unutmayın View.


0

----> Basit olan

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

0

Ekstra görünümü sadece altı çizili olarak kullanmak istemiyorsanız. Bu stili textView.

style="?android:listSeparatorTextViewStyle"

Sadece aşağı tarafı gibi ekstra özellikler katacak

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

kolayca geçersiz kılabilirsiniz.

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.