2017-05-29 43 views
0

我的TextViews具有正方形背景,数字每秒出现一次。我使用方形图像作为背景,并将文本重心设置为将正方形中的数字居中。它在xxhdpi手机上不起作用。我怎样才能让数字居中?TextView的中心重力无法在RelativeLayout中的xxhdpi上工作

enter image description here

这是代码:

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

如果这个问题只出现xxhdpi设备上..比你可以检查其运行时间设备,并设置marginbottom文本这样。我为我的工具栏文本添加了边距。希望你能得到这一招

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

也试图理解填充和边距之间的区别。margin是用于外部空间,padding用于内部空间..就像我们在css中给出的一样。 –