2016-12-13 12 views
3

私はのLinearLayoutを持っている...Android LinearLayoutディバイダ、パーセンテージ? happy.xmlで

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

ここでは、ファイルhappy_spacer.xmlだ...

<?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> 

ファンタスティックは、スペーサーが高い8DPです。

しかし、あなたは、スペーサの高さは、それが中に座っているページの高さの一定割合にする必要があり、応答性の世界では、もはやそのように動作することはできません。

(あるいは、それが持っています - say - happy.xmlの何か他の高さに関連しています)

Androidソリューションとは何ですか?

重要 - このような状況でCharukaは、以下の説明として、あなたはほぼ確実にしたい "PX" の物理ピクセル、DPまたはディップません。)

現代Android用

、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

Androidの用語では、「リソース修飾子」と「設定修飾子」(もしあれば)の違いは何ですか?乾杯 – 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やディップを使用する場合のAndroidデバイスに依存ことをダウンスケールします、8px代わりの8DPまたは8DIP使用する必要があります:あなたが直接LinearLayout内であなたの分圧器を使用している場合しかし、あなたは唯一のlinearLayout.setDividerDrawable();

注意を持っていますdpi.Soそれは応答する世界のデバイスに応じて少し変わる;)醜いように見える。だからあなたの本当の質問を持っているpxの任意の画面のための明確で同じサイズの高さを使用する必要があります...。

+0

ありがとうございます。 (あなたは正しいです、ある程度は、dp/dipを使うだけで反応が出ます!) – Fattie

関連する問題