1

레이아웃 매개 변수 (너비, 높이 및 여백)를 설정하거나 LayoutParams를 프로그래밍 방식으로 특정 레이아웃에 설정하려면 레이아웃 유형을 부모는 알고 있어야합니다.목록보기의 사용자 지정된 행으로 사용되는 루트 xml 레이아웃의 LayoutParams 가져 오기

예 다음은 1

LinearLayout.LayoutParams lp = new LinearLayout.LayoutParams(LayoutParams.MATCH_PARENT, LayoutParams.MATCH_PARENT); 
someLayout.setLayoutParams(lp); 

는 someLayout 유형은 정말 알 수 필요가 없습니다. LinearLayout.LayoutParams는, someLayout의 부모가 LinearLayout 인 것을 의미합니다.

예 2

LinearLayout.LayoutParams lp = (LinearLayout.LayoutParams)someLayout.getLayoutParams(); 
lp.width = LayoutParams.MATCH_PARENT; 
lp.height = LinearLayout.LayoutParams.MATCH_PARENT; 

부모 종류를 알 수없는 경우 문제가 온다. 커스터마이징 가능한리스트 뷰 행 레이아웃을 구현하면 알 수없는 행 상위가있는 상황이 발생합니다. 리스트 항목을 보관 유지하는 부모 이보기 안으로 들어가 예 레이아웃 목록보기 항목

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" 
    android:id="@+id/country" 
    android:layout_width="wrap_content" 
    android:layout_height="wrap_content" 
    android:orientation="vertical" 
    android:gravity="center_horizontal|top"> 
     . 
     . 

</LinearLayout> 

에 대한

는 어댑터 클래스에서의 getView 방법에 돌아왔다.

@+id/country의 레이아웃으로 LayoutParams를 설정하는 방법 ???

내가 정말로 염려하는 것은 레이아웃에 여백을 설정하는 것입니다.

답변

1

부모 클래스를 알 수 없거나 확신 할 수없는 경우 일반 ViewGroup.LayoutParams을 사용할 수 있습니다. 귀하의 경우에는 부모가 ListView 그 자체이므로 더 구체적인 것이 필요하다면 AbsListView.LayoutParams을 사용할 수 있습니다.

이제는 ListView가 여백을 지원하지 않는 문제가 있습니다. 항목 사이에 공간을 추가하려면 각 행의 패딩으로 재생할 수 있습니다. 그게 당신을 위해 작동하지 않는 경우, 당신은 또한 ListView에 필요한 너비와 어쩌면 수평 여백으로 ListView에 투명한 제수를 추가 할 수 있습니다. 이 같은 것은 :

<ListView 
    ... 
    android:divider="@android:color/transparent" 
    android:dividerHeight="10dp" 
    android:marginLeft="5dp" 
    android:marginRight="5dp" /> 

모든 목록 셀 주위에 5dp 여백을 추가합니다.

+0

ViewGroup.LayoutParams에는 여백 속성이 없습니다. – hasan83

+0

AbsListView.LayoutParams too – hasan83

+0

아, 죄송합니다. 마지막 줄을 건너 뛰었습니다. 나는 나의 대답을 업데이트했다. – ivagarz