2012-08-24 4 views
1

ListView에 이름 : 값 쌍의 목록을 표시해야합니다. 그리고 가장 긴 이름 너비로 값을 정렬하고 싶습니다. 그러나 데이터가 수신 될 때까지 이름의 길이와 개수는 알 수 없습니다. 예를 들어이름 : 값 쌍을 ListView 항목으로 정렬하는 방법

- weigth 0.5로 값 쌍 - I는 상품 레이아웃으로 LinearLayout을 가진 어댑터를 만들었으며 I 이너 이름은 LinearLayouts 추가있어 지금은

name1:   value1 
name111:  value2 
someOtherName: value3 
----------------------next ListView Item 
name3:   value4 
longestNameeee: value5 
----------------------next ListView Item 

0.5 (값 수단의 중간 후에 도시 형세). 그러나 가장 긴 이름 길이에 따라 이름 - 값 가중치를 설정하는 방법은 무엇입니까?

+0

열이 모든 행에 대해 동일한 너비 인 2 열 그리드 뷰를 사용하는 것은 어떻습니까? 다음은 GridView에서 열 너비를 제어하는 ​​방법에 대한 제안입니다. http://stackoverflow.com/questions/985153/how-to-make-a-gridview-stretchable-in-android-to-expand-the-column-width -아무에게나 –

답변

1

어쩌면 당신은 listview 행 레이아웃에서 상대 레이아웃을 사용하고 이름을 왼쪽에 정렬하고 오른쪽에 값을 정렬 할 수 있습니까?

또 다른 옵션은 텍스트의 길이를 측정 Paint.measureText를 사용 할 수 있습니다 -하지만 페인트 속성을 설정해야하는 텍스트 뷰의 디스플레이 등록 정보와 같은 그 (TEXTSIZE, texyStyle, 글꼴, ...) http://developer.android.com/reference/android/graphics/Paint.html#measureText(java.lang.String, INT, int)

이렇게하면 텍스트 길이를 알맞게 측정 할 수 있습니다. 픽셀 단위로 6e를 제공하므로리스트 행의 모든 ​​이름 textViews의 레이아웃 매개 변수를 설정할 수 있습니다.

0

가장 긴 이름 뒤에 정확히 시작해야 할 값이 필요합니까? 아니면 가장 긴 이름을 보여줄 수 있을까요? 글쎄, 내가 (그리고 비슷한 문제에서) 제안한 LinearLayout을 사용하지 않고, RelativeLayout.

두 개의 TextView를 정의 할 수 있습니다. 그 중 하나는 오른쪽에 중력을가집니다. 당신의 코드에서 볼 수 있듯이, 오른쪽 필드는 항상 같은 크기입니다. 맞습니까? 그래서 그것에 맞게 조절하고 왼쪽 공간을 자유롭게 채우십시오. 내 배치 예 : 그것은 필요한 좌측은 명 방치로

<?xml version="1.0" encoding="utf-8"?> 
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" 
    android:layout_width="fill_parent" 
    android:layout_height="wrap_content" 
    android:background="@drawable/list_selector" 
    android:orientation="horizontal" 
    android:padding="3dip" > 

<!-- Name--> 
<TextView 
    android:id="@+id/name" 
    android:layout_width="wrap_content" 
    android:layout_height="wrap_content" 
    android:layout_alignParentLeft="true" 
    android:textColor="#040404" 
    android:typeface="sans" 
    android:textSize="20dip" 
    android:text="Name" 
    android:textStyle="bold"/> 

<!-- Amount --> 
<TextView 
    android:id="@+id/amount" 
    android:layout_width="wrap_content" 
    android:layout_height="wrap_content" 
    android:layout_alignParentRight="true" 
    android:gravity="right" 
    android:layout_marginRight="5dip" 
    android:text="money" 
    android:textSize="20dip" 
    android:textColor="#FF8B1500" 
    android:textStyle="bold" 
    /> 
</RelativeLayout> 

올바른 텍스트 뷰는 많은 공간을 채운다.

희망 나는 아이디어를주는 것을 도왔다.

관련 문제