2012-02-19 2 views
0

나는 안드로이드 프로그래밍 및 레이아웃에 비교적 익숙하며 텍스트 및 아이콘이있는 사용자 정의 목록 뷰를 만드는 데 집착했습니다. 나는 몇 가지 예제를 확인하고 시험해 보았고, 그것들에서 내 자신 만의리스트 뷰를 만들려고했다. 나는 지금 내가 원하는 것처럼이 일을하기 위해 내가 무엇을해야하는지 모른다.안드로이드 사용자 정의 listview relativelayout 위치 지정 문제

내 현재 결과 (첫 번째 행) 및 두 번째 행 - 내 추악한 MsPaint 에디션 - 내가 원하는 방식입니다. 그 뒤에 다른 두 개의 아이콘이있는 확대경 유리 아이콘에 도달하면 잘리는 텍스트입니다.

Current and wanted state

나는이 작업을 수행하는 것은 매우 몇 가지 다른 레이아웃을 시도하고, 나는 들었다 그 어느 내가 할 수있는 (더 나은 성능과 다른 thingies를 가지고 내가 '상대 레이아웃을 사용한다는 것을 읽기 지금 당장 리콜).

[편집] 업데이트 및 요약 된 문제 : 저는 조금 더 수수께끼를 썼습니다.하지만 내 실제 문제는 텍스트 뷰가 그 오른쪽에 더 많은 아이콘을 넣을 것을 미리 알지 못한다는 사실입니다. 확대경. 즉, 해당 아이콘의 공간을 '예약'하지 않고 사용 가능한 공간을 모두 차지하고 확대 아이콘 만 남겨 둡니다. [/ 편집]

내 레이아웃이 포함 된 3 개의 xml 파일이 있습니다. (나는 :)이 바보 같은 이름을 알고) 'my_listview'의

<?xml version="1.0" encoding="utf-8"?> 
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" 
    style="@style/LayoutWrap"> 

    <ListView 
     android:id="@+id/my_listview" 
     style="@style/List"/> 
</LinearLayout> 

'XML 파일': 여기에 단지 내 첫 번째 파일은 내가 함께 시작 화면 레이아웃의

<?xml version="1.0" encoding="utf-8"?> 
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" 
style="@style/myListItem" 
android:id="@+id/list"> 


    <TextView 
    android:id="@+id/my_item_title" 
    style="@style/myItemName" 
    android:layout_alignParentLeft="true" 
    android:layout_alignParentTop="true" 
    android:layout_toLeftOf="@+id/my_item_detail" 
    android:text="Name" /> 



    <ImageView 
     android:id="@id/my_item_detail" 
     style="@style/myImageItem" 

     android:src="@drawable/ic_my_detail_unselected" 
     android:contentDescription="Detail" 
     android:layout_alignParentRight="true" 
     android:layout_alignParentTop="true" 
     android:layout_toLeftOf="@+id/my_item_delete" 
    /> 


    <ImageView 
     android:id="@id/my_item_delete" 
     style="@style/myImageItem" 

     android:src="@drawable/ic_my_delete_unselected" 
     android:text="Delete my" 
     android:layout_alignParentTop="true" 
    /> 

     <ImageView 
     android:id="@+id/my_item_copy" 
     style="@style/myImageItem" 

     android:src="@drawable/ic_my_update_unselected" 
     android:text="Copy my" 
     android:layout_alignParentTop="true" 
     android:layout_toRightOf="@id/my_item_delete" 
    /> 

</RelativeLayout> 

내 'styles.xml'에는 특별한 속성이없는 정의 된 스타일이 있습니다. 유일한 흥미로운 점은 특정 textSize (아마도 android : LargeAppearance 정도면 더 좋음)를 가진 텍스트의 스타일을 한 줄로 강요했다는 것입니다.

<?xml version="1.0" encoding="utf-8"?> 
<resources> 
     <style name="WrapBoth"> 
     <item name="android:layout_width">wrap_content</item> 
     <item name="android:layout_height">wrap_content</item> 
    </style> 

    <style name="WrapHeight"> 
     <item name="android:layout_width">fill_parent</item> 
     <item name="android:layout_height">wrap_content</item> 
    </style> 

     <style name="LayoutWrap"> 
     <item name="android:layout_width">fill_parent</item> 
     <item name="android:layout_height">fill_parent</item> 
     <item name="android:orientation">vertical</item>   
    </style> 

      <style name="List" parent="style/WrapHeight"/> 

    <style name="myListItem"> 
     <item name="android:padding">5dp</item> 
     <item name="android:layout_width">fill_parent</item> 
     <item name="android:layout_height">?android:attr/listPreferredItemHeight</item> 
    </style> 

    <style name="myItemName" parent="style/WrapBoth"> 
     <item name="android:textSize">11sp</item> 
     <item name="android:textStyle">bold</item> 
     <item name="android:ellipsize">end</item> 
     <item name="android:lines">1</item> 
     <item name="android:scrollHorizontally">true</item> 
    </style> 

    <style name="myImageItem" parent="style/WrapBoth"> 

    </style> 
</resources> 

미리 도움을 주셔서 감사합니다. 한편, 나는 'buttonListeners'에 대한 작업을 할 것이고, 나는 그것들이 많은 문제가 될 것이라고 기대하지 않는다.

답변

2

나는 결국이 문제를 해결할 수 있었다. 레이아웃이 작동합니다. 그리고 아마도 다른 사람이 같은 문제에 비틀 거릴 수도 있고 이로부터 유용한 정보를 얻을 수도 있습니다.

이 문제를 해결하기 위해 나는 3 개의 이미지가 들어있는 상대방 레이아웃을 만들고 이미지를 원하는 위치에 배치했습니다. 나는 그 동일하게 유지,

<TextView 
    android:id="@+id/item_title" 
    style="@style/ItemName" 
    android:layout_alignParentLeft="true" 
    android:layout_centerVertical="true" 
    android:text="@string/dummy_title" 
    android:layout_toLeftOf="@+id/options"/> 

내가 사용하는 스타일 : 나는 다음과 같은 속성을 준

<RelativeLayout 
     android:id="@id/options" 
     android:layout_width="wrap_content" 
     android:layout_height="wrap_content" 
     android:layout_alignParentRight="true" 
     android:layout_centerVertical="true" 
     > 

그리고 왼쪽에 머물 원하는 텍스트 뷰 : 내 RelativeLayout의 다음과 같은 속성을 준 . 이 방법을 사용하면 레이아웃은 3 개의 이미지에 대해 어떤 공간을 예약해야하는지 알 수 있습니다.

수학과 같은 것이고, 괄호 안에있는 물건이 먼저 나오고, 안드로이드에서는 레이아웃 내의 물건들이 먼저 나옵니다. :)

관련 문제