2013-04-23 4 views
5

Android Listview를 사용하고 있으며 목록보기 항목의 양쪽에 1 픽셀 분수를 지정하면 두 가지 색상의 위아래에 있습니다. 하지만 문제는 하단에 구분선을 표시하기위한 로그인을 얻지 못하고 있다는 것입니다. 나는 android:layout_below을 시도했지만 유효하지 않은 것으로 표시됩니다. ListView 항목의 상단과 하단에있는 ListView dividers

이 내가 위의 경계를 위해 사용하고있는 XML 파일 목록보기 코드

<ListView 
     android:id="@+id/myphnview" 
     android:layout_width="fill_parent" 
     android:layout_height="wrap_content" 
     android:layout_below="@drawable/dividerheight" 
     android:background="#E9EAEC" 
     android:clickable="true" 
     android:divider="@drawable/dividerheight" > 
    </ListView> 

입니다. dividerheight.xml

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

    <item> 
     <shape android:shape="line" > 
      <stroke android:color="#c6c7c9" /> 

      <size android:height="1px" /> 
     </shape> 
    </item> 


</layer-list> 

이것은

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" 
    android:id="@+id/rowlayout" 
    android:layout_width="fill_parent" 
    android:layout_height="wrap_content" 
    android:background="#E9EAEC" 
    android:orientation="horizontal" > 

    <LinearLayout 
     android:layout_width="fill_parent" 
     android:layout_height="wrap_content" 
     android:layout_weight="2" > 

     <ImageView 
      android:id="@+id/icon" 
      android:layout_width="wrap_content" 
      android:layout_height="wrap_content" 
      android:layout_margin="5dp" 
      android:background="@drawable/ic_launcher"/> 
    </LinearLayout> 

    <LinearLayout 
     android:layout_width="fill_parent" 
     android:layout_height="wrap_content" 
     android:layout_marginTop="10dp" 
     android:layout_weight="1" > 

     <TextView 
      android:id="@+id/file_name" 
      android:layout_width="fill_parent" 
      android:layout_height="wrap_content" 
      android:layout_gravity="left" 
      android:layout_margin="5dp" 
      android:text="Hello Android " 
      android:textColor="@android:color/black" 
      android:textSize="20dp" > 
     </TextView> 
    </LinearLayout> 

    <LinearLayout 
     android:layout_width="wrap_content" 
     android:layout_height="wrap_content" 
     android:layout_margin="5dp" > 

     <ImageView 
      android:id="@+id/share_button" 
      android:layout_width="wrap_content" 
      android:layout_height="wrap_content" 
      android:layout_gravity="left" 
      android:background="@drawable/ic_launcher"/> 
    </LinearLayout> 



</LinearLayout> 
+0

목록보기에 맞춤 어댑터를 사용하고 있습니까? –

+0

@Devu Soman 그렇습니다. 맞춤 어댑터입니다. –

+1

목록 항목의 상단과 하단에 서로 다른 두 가지 색상을 설정하려고합니다. if (position % 2 == 0)와 같이 목록 어댑터의 getView()에서 devider를 설정하려고했습니다. { ((ListView) 상위).setDivider (getResource(). getDrawable (R.drawable.deviderheight)); } else {} –

답변

14

이를 수행하는 방법에는 여러 가지가 있습니다. 하나의 간단한 방법은리스트에서 디바이더를 완전히 숨기고 (디바이더 폭을 0 또는 디바이더를 null로 설정), 각리스트 항목에 맨 위의 한 줄과 맨 아래의 줄을 포함하게하는 것입니다. 이 XML 고려 : 이미 사용자 정의 어댑터를 사용하는 것처럼

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

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

    <LinearLayout ...> 
     <!-- this is your current list item LinearLayout --> 
    </LinearLayout> 

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

</RelativeLayout> 

를,이 어댑터의 getView 방법에 목록 항목 배치를위한 이상과 같은 XML을 사용하여 단지 문제. 이렇게하면 위쪽에 흰 선이 있고 아래쪽에 검은 선이있는 목록 항목이 60dp 높이로 표시됩니다.

+0

그게 아주 좋은 해결책이긴하지만 내 layou는 상대하지만 선형이 아니야 –

+0

@Nikhil "나머지 목록 항목 레이아웃은 여기에있다"라고하는 곳에 선형 레이아웃을 추가하십시오. 또는 목록 항목의 레이아웃을 게시하면 적절하게 답변을 업데이트 할 것입니다. –

+0

@Aleka G 내 행 디자인으로 게시물을 업데이트 중입니다. –

4

당신이 목록보기의 상단과 하단 라인 (테두리)을 배치 할 것으로 보인다 내 행의 레이아웃입니다. 그게 당신이 원하는 경우, 나는 아래의 코드를 제안합니다.

res/values ​​/ styles.xml의 행을 다음과 같이 준비하십시오.

<style name="Line"> 
    <item name="android:layout_width">fill_parent</item> 
    <item name="android:layout_height">2px</item> 
    <item name="android:layout_marginLeft">10dp</item> 
    <item name="android:layout_marginRight">10dp</item> 
    <item name="android:background">@drawable/line_gradient</item> 
</style> 

고해상도/드로어 블/사진 line_gradient.xml :

<shape xmlns:android="http://schemas.android.com/apk/res/android" 
    android:shape="rectangle"> 
<gradient 
    android:startColor="@color/white" 
    android:endColor="@color/white" 
    android:centerColor="@color/blue" 
    android:useLevel="false" 
    android:type="linear" 
    android:angle="0"/> 
</shape> 

마지막으로 당신이 아래의 방법으로 이제까지 필요로 라인을 사용합니다.

<View 
     style="@style/Line"/> 
<ListView 
................ 
................ 
/> 
<View 
     style="@style/Line"/> 

이것은 내 앱에서 사용한 코드이지만 사용자가 원하는대로 사용자 정의하거나 색상을 지정할 수 있습니다. listview 바로 위와 아래에서보기를 만들 수도 있습니다. 그러나 styles.xml에 별도로 생성하면 코드 중복없이 여러 위치에서 사용할 수 있습니다.

+0

하지만 목록보기의 모든 항목에 대해 지정하려고합니다. –

+0

그런 다음 사용자 정의 행 (목록 항목) 전후에 해당보기를 사용해야 할 수도 있습니다. 귀하의 사용자 정의 행 xml 파일 및 0dp로 구분선 높이 만들기. – Kanth

2

나는 이것을 할 방법이 없다고 생각한다. 하지만 ListViewfooterviewheaderview을 추가 할 수 있습니다. 나는 그것이 당신이 원하는 것을 가져올 것이라고 생각합니다. 예를 들어

:

TextView tv1 = new Textview(this); 
tv1.setBackgroundResource(R.drawable.dividerheight); 

listview.addHeaderView(totalExpense); 
listview.addFooterView(totalExpense); 

은 내가 당신을 도울 바랍니다.

+0

하지만 목록보기의 모든 항목에 부여하고 싶습니다. –

+0

모든 listview는 무엇을 의미합니까? 모든 목록 항목을 의미합니까? – Gunaseelan

+0

모든 행을 의미합니다. –

관련 문제