마스터Q&A 안드로이드는 안드로이드 개발자들의 질문과 답변을 위한 지식 커뮤니티 사이트입니다. 안드로이드펍에서 운영하고 있습니다. [사용법, 운영진]

이미지뷰에 대한 질문!!

0 추천
1. 주단위 달력을 이미지뷰로 구현중인데 7개 이미지를 한줄로 잘 정렬하는방법이 무엇이 있을까요? 임의로 마진 두면 간격이 이상해져서요!!

 

2. 1번말고 다른거인데 동적으로 이미지뷰를 넣을 때 xml에는 이미지뷰들이 위아래로 차례대로 나열되어있고 거기서 선택된것만 보이게 하려고 하는데 여기서 위아래 마진있으면 null이나 invisible로 했을 때 그 범위만큼은 공백으로 남아있더라구요 리사이클러뷰로 말고는 방법이 없나요 순수하게 이미지뷰로?? 마진같은거 없애주고
enerigpy (2,110 포인트) 님이 2023년 3월 27일 질문

1개의 답변

+1 추천
 
채택된 답변
1. LinearLayout 을 이용하면 각 아이템들을 일렬로 나란히 배치할 수 있겠습니다.
이미지뷰 서로간 간격을 동일하게 할 때, style 속성을 이용해서 사이즈와 마진을 공통으로 지정하면 관리하기 좋습니다.

2. INVISIBLE 이라는 값이 공간을 차지한 채로 화면에 보이지 않게 처리해 줍니다.
GONE 으로 설정 하셔야 원하시는 숨김처리가 될 겁니다.
익명 님이 2023년 3월 27일 답변
enerigpy님이 2023년 3월 27일 채택됨
2번 질문에서

앞에서 이미지를 보여줄거를 클릭을 통해 불리안으로 intent로 넘기고

Intent intent = getIntent();

        i11 = intent.getBooleanExtra("i", i);
        i22 = intent.getBooleanExtra("i2", i2);
        i33 = intent.getBooleanExtra("i3", i3);
        i44 = intent.getBooleanExtra("i4", i4);
        i55 = intent.getBooleanExtra("i5", i5);
        i66 = intent.getBooleanExtra("i6", i6);
        i77 = intent.getBooleanExtra("i7", i7);
        i88 = intent.getBooleanExtra("i8", i8);
        i99 = intent.getBooleanExtra("i9", i9);
        i100 = intent.getBooleanExtra("i10", i10);

im = findViewById(R.id.imageView);
        if(i1111 = false){
            im.setVisibility(View.GONE);
        }
        else{
            im.setVisibility(View.VISIBLE);
        }

이렇게 하는데 이미지가 보여지고 안보여지고가 제대로 안되고 있는데 문제가 있을까요?
LinearLayout을 사용할 경우는 weight 속성을 주시면 동일한 너비를 사용하실 수 있어요.
android:weight="1"

그리고 뷰가 10개나 되는데 하나씩 컨트롤 하지 마시고 배열이나 리스트를 사용하세요.

intent.putExra("visibilites", new Integer[]{
    View.VISILBLE, View.VISIBLE, View.GONE,,..., View.VISIBLE
});


weeklyViews = Arrays.asList(im, ...); // 대상 View들을 리스트에 담는다.

int[] visibilityExtra = intent.getIntArrayExtra("visibilites");

for (int i = 0; i < weeklyViews.size(); i++) {
     weeklyViews.setVisibility(visibilityExtra[i]);
}

아니면, 필요한 값을 전달받아서 뷰를 동적으로 생성하는 방법도 있어요.
2번 질문은 weekly랑 다른거에요!
Visibility외에 weight 속성을 추가로 주면 자동으로 균일한 너비를 줄 수있기 때문에 언급한거예요. 일일이 width를 계산해서 넣기에는 너무 번거롭거든요.
네 2번은 해결했고
1번에서 이미지뷰 나열할때 이미지뷰에 이미지뷰를 넣는게 있고 어떤 코드에 의해 바뀌는게 있어서 그것들이 정렬이 안되고 lienarlayout에서 이미지뷰 밑으로 가는데 이럴땐 어떻게 해야할까요?
질문이 이해가 잘 안가서 정확히 어떤 상황인지는 모르겠지만, 먼저 떠오르는 해결책은 '어떤 코드'가 정렬을 방해하지 않도록 하던가, 아니면 다시 정렬을 하게 하던가 하도록 해야겠죠. 정렬이 변경되기 전의 원본 정렬상태를 가지고 있다가 다시 적용하실 수 있는지도 생각해 보세요.
...