2015-02-07 8 views
-1

저는 android에서 Custom List View를 사용하고 있습니다. Listview에서 하위 항목과 공백을 추가하는 방법

enter image description here

내 목록보기입니다. 두 목록 사이에 공백을 추가하거나 테두리 크기를 늘려야합니다. 그렇게하는 방법? 및 하위 텍스트를 추가하는 방법?

내 list.xml

<?xml version="1.0" encoding="utf-8"?> 
<TableLayout xmlns:android="http://schemas.android.com/apk/res/android" 
    android:layout_width="match_parent" 
    android:layout_height="match_parent" > 
    <TableRow> 
     <ImageView 
      android:id="@+id/img" 
      android:layout_width="50dp" 
      android:layout_height="50dp"/> 

     <TextView 
      android:id="@+id/txt" 
      android:layout_width="wrap_content" 
      android:layout_height="50dp" /> 



</TableRow> 
</TableLayout> 

customlist.java

package in.wptrafficanalyzer.locationplacesautocomplete; 


import android.app.Activity; 
import android.view.LayoutInflater; 
import android.view.View; 
import android.view.ViewGroup; 
import android.widget.ArrayAdapter; 
import android.widget.ImageView; 
import android.widget.TextView; 

public class CustomList extends ArrayAdapter<String>{ 

private final Activity context; 
private final String[] web; 
private final Integer[] imageId; 
public CustomList(Activity context, 
String[] web, Integer[] imageId) { 
super(context, R.layout.list_single, web); 
this.context = context; 
this.web = web; 
this.imageId = imageId; 

} 
@Override 
public View getView(int position, View view, ViewGroup parent) { 
LayoutInflater inflater = context.getLayoutInflater(); 
View rowView= inflater.inflate(R.layout.list_single, null, true); 
TextView txtTitle = (TextView) rowView.findViewById(R.id.txt); 

ImageView imageView = (ImageView) rowView.findViewById(R.id.img); 
txtTitle.setText(web[position]); 

imageView.setImageResource(imageId[position]); 
return rowView; 
} 
} 
+0

사용자 정의 행에 약간의 마진이나 패딩을 넣어, int, int, int)에. 그런 행은 컨테이너로 ViewGroup이 필요하지 않습니다. 복합 Drawable이있는 단일 TextView가 될 수 있습니다. 더 필요한 것은 없습니다. 레이아웃을 최대한 평평하게 유지하려면 –

+0

어떻게 추가합니까? 죄송합니다. 나는 안드로이드에 대한 새로운이야. – Thamaraiselvam

답변

1
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" 
    android:layout_width="fill_parent" 
    android:layout_height="?android:attr/listPreferredItemHeight" 
    android:padding="6dip"> 
    <ImageView 
     android:id="@+id/img" 
     android:layout_width="50dp" 
      android:layout_height="50dp"/> 

     /> 
    <LinearLayout 
     android:background="#E5E4E2" 
     android:orientation="vertical" 
     android:layout_width="0dip" 
     android:layout_weight="1" 
     android:layout_height="fill_parent"> 
     <TextView 
      android:id="@+id/txt" 
      android:layout_width="fill_parent" 
      android:layout_height="0dip" 
      android:layout_weight="1" 
      android:gravity="center_vertical" 
     /> 
     <TextView 
      android:layout_width="fill_parent" 
      android:layout_height="0dip" 
      android:layout_weight="1" 
      android:id="@+id/sub" 
      android:singleLine="true" 
      android:ellipsize="marquee" 
     /> 

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

<TableRow 
android:layout_margin="5dp" > 
//USE MARGIN TO INDENT THE TABLEROW 
    <ImageView 
     android:id="@+id/img" 
     android:layout_width="50dp" 
     android:layout_height="50dp"/> 

    <TextView 
     android:id="@+id/txt" 
     android:layout_width="wrap_content" 
     android:layout_height="50dp" /> 
</TableRow> 
</TableLayout> 
//YOU CAN ADD WHATEVER SUB TEXT IN TABLEROW IN ADDITION TO txt as long as you add it to String[] and Integer [] in Java 
1

이것은 평평한 (따라서 빠른) XML 레이아웃 디자인 (A 사용자 정의 행의 경우 ViewGroup이 필요 없음) :

<?xml version="1.0" encoding="utf-8"?> 
<TextView 
    xmlns:android="http://schemas.android.com/apk/res/android" 
    android:layout_width="match_parent" 
    android:layout_height="match_parent" 
    android:id="@+id/txt" 
    android:layout_width="wrap_content" 
    android:layout_height="50dp" 
    android:drawablePadding="8dp" 
    android:layout_margin="8dp" 
/> 

참고로 레이아웃 여백을 8dp 추가했습니다. 다음 코드에서

: setCompoundDrawablesWithIntrinsicBounds에

@Override 
public View getView(int position, View view, ViewGroup parent) 
{ 
    LayoutInflater inflater = context.getLayoutInflater(); 
    View rowView = inflater.inflate(R.layout.list_single, null, true); 
    TextView txtTitle = (TextView) rowView.findViewById(R.id.txt); 

    txtTitle.setText(web[position]); 
    // This is where you set the image to the left of the TextView: 
    txtTitle.setCompoundDrawablesWithIntrinsicBounds (imageId[position], nul, null, null); 
    return rowView; 
} 

참조 : http://developer.android.com/reference/android/widget/TextView.html#setCompoundDrawablesWithIntrinsicBounds(int