2016-12-13 2 views
3

...Android LinearLayout divider, percentage? 내가있는 LinearLayout이 happy.xml에서

<LinearLayout 
    android:orientation="vertical" 
    android:divider="@drawable/happy_spacer" 
    android:showDividers="middle" 
    ...> 

여기에 스페이서가 높은 8dp입니다

<?xml version="1.0" encoding="utf-8"?> 
<shape xmlns:android="http://schemas.android.com/apk/res/android"> 
    <size android:height="8dp" /> 
    <solid android:color="#90909090" /> 
</shape> 

이 환상적인 ... 파일 happy_spacer.xml입니다.

그러나 당신이 대답하는 세상에서 더 이상 그런 식으로 작동하지 않을 수는 스페이서의 높이가에있다.이에 앉아 페이지의 높이의 일정 비율로

있다 (또는 - 말하자면 happy.xml의 다른 부분의 높이와 관련이 있습니다.)

Android 솔루션이란 무엇입니까?

(중요 - 이러한 상황에서 Charuka 아래 설명과 같이, 당신은 거의 확실합니다 "픽셀"물리적 픽셀, DP 또는 딥 없습니다.)

현대 안드로이드에 대한

, APK (21) 앞으로 만.

+1

퍼센트를 처리하는 지원 라이브러리가 있지만 PercentRelativeLayout 및 PercentFrameLayout 만 있습니다 ... 셰이프에 대한 백분율을 사용할 수 없다고 생각합니다. – Jaythaking

답변

4

일반적으로 적어도 내 경험에 의하면 목록 항목 구분선 은 정적 높이가입니다. 어쨌든 XML을 사용하여 화면 높이의 비율을 만들 수는 없다고 생각하지만 프로그래밍 방식으로 setDividerHeight(); 자신의 비율에 따라 크기를 계산해야합니다.

그렇지 않으면 break points을 기준으로 크기를 조정할 수 있습니다 (resource qualifiers). 예 : h720dp (최소 높이 720dp) 또는 w600dp (최소 너비 600dp).

+1

기다리십시오,'setDividerHeight'는 LinearLayout에 맞지 않습니다 * 맞습니까? – Fattie

+0

@JoeBlow 아니요,하지만 원한다면 원하는 크기로 'Drawable'을 만들고 ['setDividerDrawable()'] (https://developer.android.com/)을 사용할 수 있어야합니다. reference/android/widget/LinearLayout.html # setDividerDrawable (android.graphics.drawable.Drawable)). – Bryan

+0

Say, @Bryan Android 용어로 "resource qualifiers"와 "configuration qualifier"(있는 경우)의 차이점은 무엇입니까? 환호 – Fattie

2

사용 configuration qualifiers 및 제공 다른 dimens :

예를 들어,

// happy_spacer.xml 
<size android:height="@dimen/divider" /> 

// values/dimens.xml 
<dimen name="divider">8dp</dimen> 

// values-w720dp/dimens.xml 
<dimen name="divider">16dp</dimen> 

// values-w820dp/dimens.xml 
<dimen name="divider">24dp</dimen> 
1

Bryan's answer에 동의하고 목록 항목 내부에 divider를 사용하는 경우는 setDividerHeight() 방법을 사용할 수 있습니다. 당신은 DP 또는 수영을 사용하는 경우가

당신은 8px 대신 8dp 또는 8DIP의 사용해야

는 안드로이드 장치를 따라 그 규모를 축소 할 것이다 : 당신이 직접 LinearLayout 내부에 디바이더를 사용한다면 당신은 단지 linearLayout.setDividerDrawable();

주의해야 dpi.So는 응답하는 세계에서 장치에 따라 약간 바뀝니다.)보기 흉하게 보입니다. 그래서 진짜 질문을 가지고px 어떤 화면에 대한 명확하고 같은 크기의 높이를 사용해야합니다 ....

+0

감사합니다. (당신이 옳다면 어느 정도는 dp/dip을 사용하면 약간의 반응을 얻을 수 있습니다!) – Fattie

관련 문제