2016-04-14 20 views
1

XamarinのAndroidプロジェクトでは、ディメンションファイルを使用してさまざまな画面サイズ/解像度のテキストサイズ、埋め込み、余白などを指定しています。Xamarin Android - DimensionファイルからTextSizeを設定する

私は、レイアウト内とコード内で値を直接設定することには大きな違いがあることに気付きました。私が追加した場合たとえば、私は結果がコード

myTextView.SetTextSize(ComplexUnitType.Sp, _context.Resources.GetDimension(Resource.Dimension.nav_tile_text_size))

でこれを行うことと同じになるように期待

その後、

android:textSize="@dimen/nav_tile_text_size"

レイアウトXMLのTextViewに次の

ディメンションファイルには、以下が含まれます。

<dimen name="nav_tile_text_size">17sp</dimen>

が、結果UIは、サイズが正しく、私はここで何をしないのです

Emulator Screenshot

を適用されていないことを示しています?

+0

別のユニットで試しましたか?私は問題がspであると思う。 –

+0

@AkshayKulkarni - 一部の領域ではドキュメントが不明瞭ですが、テキストサイズにSPを使用することが明確であるため、ユーザーが適用したフォントのスケーリングを考慮しています。レイアウトに直接設定するとうまく動作します。 – DilbertDave

答えて

2

それは正しいです。あなたは、そうでない場合は、電話の密度を掛けます、

myTextView.SetTextSize(Android.Util.ComplexUnitType.Sp, Resources.GetDimension(Resource.Dimension.nav_title_text_size)/Resources.DisplayMetrics.Density); 

ユニットを使用するか必要があります。私は個人的にこのコードをチェックして動作しています

+0

あなたは知っていますが、これが当てはまると思っていましたが、Androidデベロッパーのページから次のように読んだとき、私は混乱しました: "同様に、テキストサイズを定義するには、sp(スケール独立ピクセル)を選択する必要があります。ユーザー設定とシステムはdp "と同じ大きさになります。私はDP値で読むときに後処理を行う必要はないので、私はSP値のために必要ではないと思っていました。おそらく私はまだDPで問題にぶつかりませんでした。 – DilbertDave

+0

私はこれをいくつかのデバイス(mdpi> xxhdpi)でテストしましたが、これが解決策であると確信しています。同じ値を使用して同じプロパティ(TextSize)を設定することは、別の方法で行う必要がありますが、それは奇妙です。たぶん理由はありますが、これがどこかのドキュメントにあれば便利です。 – DilbertDave

+0

ここに異常があります - 別のTextViewを追加し、上記のようにテキストサイズを設定しました。私がソニータブレットS(10インチの4.0.3を実行し、xlargeとして分類されている)でアプリケーションを実行すると、3行のテキストはすべて同じサイズになります!さらに、アクセシビリティで「Large Text」を設定すると、すべての行のサイズが大きくなりますが、最初のレイアウト(レイアウトで設定)は他の2つのレイアウトよりも小さくなりました(同じ、増加、高さ)。 – DilbertDave

関連する問題