2017-05-29 8 views
0

私は毎秒表示される数字の正方形の背景を持つTextViewを持っています。私は背景のための正方形のイメージを使用し、四角形の中に数字の中心を置くためにテキストの重心を設定します。 xxhdpi電話機では動作しません。どのように番号を集中させることができますか?TextViewのCenter GravityがRelativeLayoutのxxhdpiで機能しない

enter image description here

これはコードです:この問題は、唯一のあなたは、デバイス用のランタイムと、次のようにテキストにmarginbottomを設定し、それを確認することができるより.. xxhdpiデバイスに表示された場合

displayingCell = new TextView(MyActivity.this); 
displayingCell.setTypeface(null, Typeface.BOLD); 
displayingCell.setTextSize(mySize); 
displayingCell.setTextColor(Color.BLACK); 
displayingCell.setGravity(Gravity.CENTER); 
displayingLayoutParam = new RelativeLayout.LayoutParams(diameter, diameter); 
displayingLayoutParam.setMargins(marginLeft, marginTop, 0, 0); 
displayingCell.setLayoutParams(displayingLayoutParam); 
displayingCell.setBackground(myImage); 
displayingCell.setTextAlignment(View.TEXT_ALIGNMENT_CENTER); 
+0

はあなたレイアウトXML投稿できる追加するには、このトリックを得ることを願っていますか? – Prexx

+0

私はプログラムでセルを追加します。 –

+0

重力センターを使用している場合は、余白を追加する必要はありません。意味がありません。 –

答えて

1

てみ

displayingLayoutParam.setMargins 

を削除し、

displayingLayoutParam.addRule(RelativeLayout.CENTER_IN_PARENT, RelativeLayout.TRUE); 
+0

まだ変更はありません。 –

+0

「直径」とは何ですか?おそらく両方を "ViewGroup.LayoutParams.WRAP_CONTENT"に変更する必要があります。 – Prexx

0

。私はツールバーのテキストに余白を追加しています。あなたは

switch (getResources().getDisplayMetrics().densityDpi) { 
      case DisplayMetrics.DENSITY_HIGH: 
       Log.d("density:", "high"); 
       toolbar.setTitleMarginStart(160); 
       break; 
      case DisplayMetrics.DENSITY_XHIGH: 
       // ... 
       Log.d("density:", "xhigh"); 
       toolbar.setTitleMarginStart(200); 
       break; 
      case DisplayMetrics.DENSITY_XXHIGH: 
       Log.d("density:", "xxhigh"); 
       toolbar.setTitleMarginStart(380); 
       break; 
     } 
+0

テキストの下部のパディングを設定しましたが、次のように表示されます: http://i.imgur.com/aXID4ig.png –

+0

パディングをテキストに取り除き、イメージビューの余白を設定します。 –

+0

また、パディングとマージンの違いを理解しようとしています。マージンは宇宙用で、パディングは内部空間用です。 –

関連する問題