2016-04-04 14 views
0

申し訳ありませんが、この質問は前に頼まれていた場合、その場合には、検索でそれを見つけることが困難でしたが、ここに私達は行く:AndroidのDP制限

あなたは、Android StudioでDPのピクセルを使用すると、プレビューと比較して要素が実際のデバイスやエミュレータ上でより広くまたは短くなることがあります。密度が異なると、これは意味をなさない。

高さおよび/または幅の点で特定のゴールデンリミットがある場合は、すべてのコンテンツをこの制限内に保つと、何もオフスクリーンにならないことが保証されますデバイスの画面密度はです。

例えば、私がチェスボードを作りたいならば、それはできるだけ広いが、いつもどんなスクリーンにも収まるようにしたい。ここに黄金の限界はありますか?

答えて

-1

画面の大きさがわからないので絶対値を使用しないでください。アプリに報告されたdpを選択するアプリもあります。
あなたの例を見てみましょう。チェス盤にはCellの表示があるかもしれません。 (私は最初の行のみを表示して上記の例では)

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" 
    android:layout_width="match_parent" 
    android:layout_height="match_parent" 
    android:orientation="vertical" 
    android:weightSum="8"> 

    <LinearLayout 
     android:layout_width="match_parent" 
     android:layout_height="0dp" 
     android:layout_weight="1" 
     android:orientation="horizontal" 
     android:weightSum="8"> 

     <View 
      android:layout_width="0dp" 
      android:layout_height="match_parent" 
      android:layout_weight="1" 
      android:background="@android:color/white" /> 

     <View 
      android:layout_width="0dp" 
      android:layout_height="match_parent" 
      android:layout_weight="1" 
      android:background="@android:color/black" /> 

     <View 
      android:layout_width="0dp" 
      android:layout_height="match_parent" 
      android:layout_weight="1" 
      android:background="@android:color/white" /> 

     <View 
      android:layout_width="0dp" 
      android:layout_height="match_parent" 
      android:layout_weight="1" 
      android:background="@android:color/black" /> 

     <View 
      android:layout_width="0dp" 
      android:layout_height="match_parent" 
      android:layout_weight="1" 
      android:background="@android:color/white" /> 

     <View 
      android:layout_width="0dp" 
      android:layout_height="match_parent" 
      android:layout_weight="1" 
      android:background="@android:color/black" /> 

     <View 
      android:layout_width="0dp" 
      android:layout_height="match_parent" 
      android:layout_weight="1" 
      android:background="@android:color/white" /> 

     <View 
      android:layout_width="0dp" 
      android:layout_height="match_parent" 
      android:layout_weight="1" 
      android:background="@android:color/black" /> 

    </LinearLayout> 

    ... 

これは次の結果を与える: その後(View代わりCellのに使用される)のLinearLayoutでそれらを整列させることができ

Sample image

ご覧のとおり、絶対値を使用せずに画面が完全に使用されています(ルートビューでmatch_parentが使用されているため)。もちろん、あなたの特定のニーズに合わせてこれを変更することができます。

注:これは実際にはそうしないでください。この例では、パフォーマンスに悪いネストされた重みを使用しています。これはあなたがそれをする方法のアイデアを得るためのものです。

+0

チップはありがたいですが、DPは絶対値ではありませんか?これは160 dpiの画面に関連しています。それで、もし私が正しく描写するならば、それはそれがどんなスクリーンの中にも収まることを保証する一定の限界(ちょうど、800 dpの高さ、300 dpの幅を作ることを言いましょう。 あなたのソリューションは確かに機能しますが、パフォーマンスが悪い場合は、より良い選択肢は何ですか? – OhDannyBoy

+0

画面がそれより小さい場合はどうなりますか?これはまったく仮説ですが、そのようなデバイスが存在する可能性があります(非常に低い予算またはスマートな時計)。問題はあなたが知りません*。 また、dpを使用してもレイアウトがどこでも同じように見えるとは限りません。それはユーザーにとって非常に混乱することがあります。しかし、確かに、すべての画面で動作する保証はありませんが、見栄えのよい値を見つけることができます。 – rubengees

+0

ネストされたウェイトのないLinearLayoutではなく、PercentLayoutをサポートライブラリとして使用できます。または、各セルの正しい幅と高さを計算して、コードからレイアウトを動的に作成します。 私はカスタムビューを書くことをお勧めします。これはあなたが望むものとまったく同じです。 – rubengees

関連する問題