티스토리 뷰

반응형

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

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

 

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

Add padding on view programmatically

프로그래밍 방식으로 뷰에 패딩 추가

 문제 내용 

I am developing Android v2.2 app.

저는 안드로이드 v2.2 앱을 개발하고 있습니다.

 

I have a Fragment. In the onCreateView(...) callback of my fragment class, I inflate an layout to the fragment like below:

Fragment가 있습니다. Fragment 클래스의 onCreateView(...) 콜백에서 다음과 같이 레이아웃을 인플레이트합니다.
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {
    View view = inflater.inflate(R.layout.login, null);
        
    return view;
}

 

The above inflated layout file is (login.xml):

위에 인플레이트된 레이아웃 파일은(login.xml) 다음과 같습니다.
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="fill_parent"
    android:layout_height="fill_parent"
    android:orientation="vertical">

    <TextView
        android:layout_width="fill_parent"
        android:layout_height="wrap_content"
        android:text="Username" />

    
    <TextView
        android:layout_width="fill_parent"
        android:layout_height="wrap_content"
        android:text="Username" />

</LinearLayout>

 

I would like to set a paddingTop to the above <LinearLayout> element , and I want to do it in the Java code instead of do it in xml.

위의 <LinearLayout> 요소에 paddingTop을 설정하려고합니다. 그리고 xml 대신 Java 코드에서 수행하려고합니다.

 

How to set paddingTop to <LinearLayout> in my fragment Java class code ??

Fragment Java 클래스 코드에서 <LinearLayout> 에 paddingTop을 설정하는 방법은 무엇인가요?

 

 

 

 높은 점수를 받은 Solution 

view.setPadding(0,padding,0,0);

This will set the top padding to padding-pixels.

padding-pixels에 대한 상단 패딩을 설정합니다.

 

If you want to set it in dp instead, you can do a conversion:

대신 dp로 설정하려면 변환을 수행 할 수 있습니다.
float scale = getResources().getDisplayMetrics().density;
int dpAsPixels = (int) (sizeInDp*scale + 0.5f);

 

 

 가장 최근 달린 Solution 

Step 1: First, take the padding value as an integer.

1 단계 : 먼저 패딩 값을 정수로 가져옵니다.

 

int padding = getResources().getDimensionPixelOffset(R.dimen.padding);

or int padding = 16; [Use any method]

또는 int padding = 16; [임의의 방법 사용]

 

Step 2: Then assign the padding value to the layout.

2 단계 : 그런 다음 레이아웃에 패딩 값을 할당합니다.

 

layout.setPadding(padding, padding, padding, padding);

 

All side different padding can be assigned. layout.setPadding(16, 10, 8, 12);

모든 측면에 다른 패딩을 할당 할 수 있습니다. layout.setPadding(16, 10, 8, 12);

 

For removing padding (No Padding) set padding values as 0,

패딩을 제거하려면 (패딩 없음) 패딩 값을 0으로 설정합니다.

 

layout.setPadding(0, 0, 0, 0);

 

 

출처 : https://stackoverflow.com/questions/9685658/add-padding-on-view-programmatically

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