2017-05-29 77 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中給出的一樣。 –

相關問題