0

Android を複数の画面にスケーリングする際に問題が発生しています。ドキュメントによると、Android OS は dimens.xml が mdpi 用に作成されていると想定し、それに応じて hdpi、xhdpi などに合わせてスケーリングします...

しかし、私はこの作品を見ることができません。values-hdpi のフォルダーがある場合、values-hdpi にある dimens.xml ファイルから適用された 1.5 のスケール比で SGS4 は正常に見えます。ただし、プロジェクトから values-hdpi フォルダーを削除して Android OS が hdpi にスケールアップできるようにすると、SGS4 は mdpi 値を実行するだけです。何が間違っているのかわかりません。

Android マニフェスト:

    <!-- Screen Support -->
<supports-screens android:resizeable="true"
    android:smallScreens="false"
    android:normalScreens="true"
    android:largeScreens="true"
    android:anyDensity="true"/>


<uses-sdk android:minSdkVersion="14" android:targetSdkVersion="15"/>

フォルダー構造には、値 values-es 値-fr 値-sw600dp が含まれます

values には、dimens.xml ファイルに保存された mdpi 値がすべて dp と sp で行われます。寸法.xml:

(注*) dimens.xml から xml スニペットを追加しようとするたびに、おかしな書式設定を続け、すべての dimen name= のものを削除し、使用されている dp と sp をリストするだけでした。理由がわからない。

<?xml version="1.0" encoding="utf-8"?>
<resources>
    <dimen name="center_text_margin_right">20dp</dimen>
    <dimen name="answer_row_top_padding">7dp</dimen>
    <dimen name="answer_row_bottom_padding">7dp</dimen>
    <dimen name="answer_number_text_size">12sp</dimen>
    <dimen name="answer_left_margin_from_answer_number">18dp</dimen>
    <dimen name="answer_text_size">12sp</dimen>
    <dimen name="answer_points_right_margin">20dp</dimen>
    <dimen name="answer_points_left_margin">18dp</dimen>
    <dimen name="answer_number_left_margin">60dp</dimen>
    <dimen name="center_text_size">12sp</dimen>
    <dimen name="center_text_margin_left">20dp</dimen>
    <dimen name="center_text_margin_right">20dp</dimen>
    <dimen name="answer_title_height">28dp</dimen>
    <dimen name="round_circle_margin_left">6dp</dimen>
    <dimen name="round_circle_height">6dp</dimen>
    <dimen name="round_circle_width">6dp</dimen>
    <dimen name="total_score_right_margin">26dp</dimen>
    <dimen name="total_score_left_margin">5dp</dimen>
    <dimen name="score_text_size">12sp</dimen>
    <dimen name="trivia_logo_height">25dp</dimen>
    <dimen name="trivia_logo_width">84dp</dimen>
    <dimen name="trivia_logo_margin_left">8dp</dimen>
    <dimen name="question_margin_left">26dp</dimen>
    <dimen name="question_margin_right">26dp</dimen>
    <dimen name="question_top_margin">15dp</dimen>
    <dimen name="question_margin_bottom">20dp</dimen>
    <dimen name="question_text_size">12sp</dimen>
    <dimen name="fun_fact_margin_bottom">100dp</dimen>
    <dimen name="fun_fact_text_size">12dp</dimen>
    <dimen name="answer_row_height">25dp</dimen>
</resources>

このファイル dimens.xml を使用して values-hdpi フォルダーを作成すると、

30.00dp 10.50dp 10.50dp 18.00dp 27.00dp 18.00dp 30.00dp 27.00dp 90.00dp 18.00dp 30.00dp 30.00dp 42.00dp 9.00dp 9.00dp 9.00dp 39.00dp 7.50dp 18.00dp dp 18.00dp 150.00dp 18.00dp 37.50dp

すべてがうまくいく

values-es と values-fr は、strings.xml を含む単なるフォルダーであり、そこにはディメンションはありません。たとえば、レイアウト xml ファイル全体を @dimen/answer_row_height で参照します。

前に述べたように、スケーリングされた dimens.xml ファイルを含む values-hdpi をドロップすると完全に機能しますが、削除すると Android はスケーリングしません。誰かがこれを以前に打ったことがありますか、それとも私が何を台無しにしているか知っていますか?

4

2 に答える 2

3

値は自動的にスケーリングされず、ドローアブルのみがスケーリングされます。

アプリが必要とするすべての代替リソース (値を含む) を定義するのはあなた次第です。フレームワークはそれらの決定を行うことはできませんし、行いません。

于 2013-10-16T16:39:48.487 に答える