티스토리 뷰

반응형

Stack Overflow에 자주 검색, 등록되는 문제들과 제가 개발 중 찾아 본 문제들 중에서 나중에도 찾아 볼 것 같은 문제들을 정리하고 있습니다.

Stack Overflow에서 가장 먼저 확인하게 되는 가장 높은 점수를 받은 Solution과 현 시점에 도움이 될 수 있는 가장 최근에 업데이트(최소 점수 확보)된 Solution을 각각 정리하였습니다.

 

아래 word cloud를 통해 이번 포스팅의 주요 키워드를 미리 확인하세요.

How to make space between LinearLayout children?

LinearLayout의 자식들 사이에 간격을 어떻게 만들까요?

 문제 내용 

I am programatically adding custom views to a vertical LinearLayout, and I would like there to be some space between the views. I have tried adding: setPadding(0, 1, 0, 1) to my CustomView constructor, but this doesn't seem to have any effect. Any advice?

수직 LinearLayout에 프로그래밍 방식으로 사용자 지정 뷰를 추가하고, 뷰 간에 일정한 간격을 두려고 합니다. CustomView 생성자에 setPadding(0, 1, 0, 1)을 추가해 보았지만, 이렇게 하면 효과가 없는 것 같습니다. 조언을 부탁드립니다.

 

*It was pointed out that I should use margins. Since I am dynamically adding views, I need to set the margins from code (not in xml). I believe the way to do this is below, but it isn't working.

*마진을 사용해야한다는 지적이 있었습니다. 동적으로 뷰를 추가하고 있기 때문에 마진을 코드에서 설정해야합니다(레이아웃 xml에서 설정 불가). 아래와 같이 해야하는 것으로 이해하고 있습니다. 그러나 작동하지 않습니다.
public class MyView extends View
{
    public MyView (Context context)
    {
        super(context);

        MarginLayoutParams params = new MarginLayoutParams(LayoutParams.WRAP_CONTENT,  LayoutParams.WRAP_CONTENT);
        params.setMargins(0, 10, 0, 10);
        setLayoutParams(params);

 

*Edit. I also tried using MarginLayoutParams as a parameter while adding the views to the Linear layout (as below). This also did not work:

*편집. 제가 MarginLayoutParams를 사용하여 Linear Layout에 뷰를 추가하려고도 해보았습니다. 그러나 이것도 작동하지 않았습니다.
MarginLayoutParams params = new MarginLayoutParams(linearLayout.getLayoutParams());
linearLayout.setMargins(0, 10, 0, 10);
linearLayout.addView(view, params);

 

 

 높은 점수를 받은 Solution 

The API >= 11 solution:

API >= 11에 대한 해결책:

 

You can integrate the padding into divider. In case you were using none, just create a tall empty drawable and set it as LinearLayout's divider:

여백(padding)을 divider에 통합시킬 수 있습니다. 만약 이전에는 divider를 사용하지 않았다면, 높은 빈 drawable을 만들고 LinearLayout의 divider로 설정하면 됩니다.
    <LinearLayout
            android:showDividers="middle"
            android:divider="@drawable/empty_tall_divider"
...>...</LinearLayout>

 

empty_tall_divider.xml:

<?xml version="1.0" encoding="utf-8"?>

<shape xmlns:android="http://schemas.android.com/apk/res/android">
    <size
            android:height="40dp"
            android:width="0dp"/>
</shape>

 

 

 가장 최근 달린 Solution 

You can use android:layout_weight="1"

android:layout_weight="1"를 사용할 수 있습니다.

 

Like This: enter image description here

이렇게 하세요:

 

 

 

출처 : https://stackoverflow.com/questions/4259467/how-to-make-space-between-linearlayout-children

반응형
댓글
공지사항
최근에 올라온 글