2016-08-02 56 views
0

我正在以編程方式創建一個呈現在畫布上的TextView。我的代碼是這樣做的:無法以程序創建的TextView垂直對齊文本

TextView textView = new TextView(context); 
textView.layout(0, 0, 140, 180); 
textView.setTextSize(TypedValue.COMPLEX_UNIT_DIP, 16); 
textView.setGravity(Gravity.CENTER_VERTICAL); 
textView.setBackgroundColor(Color.GREEN); 
textView.setTextColor(Color.BLACK); 
textView.setText("ABC"); 
textView.setDrawingCacheEnabled(true); 

canvas.drawBitmap(textView.getDrawingCache(), scaledX, scaledY, null); 

但它沒有垂直對齊。我試圖將它與重力對齊也對齊,但沒有結果。水平對齊文本沒有問題。

回答

0

也許你可能需要設置TextView的高度。沒有設置TextView的高度,它可能有一個wrapContent高度,因此center_vertical沒有影響。

下面是設置高度MatchParent的一個簡單的例子(請確保有足夠的空間,它比文字的字體高度較高,所以它具有空間垂直居中)

textView.setLayoutParams(new ViewGroup.LayoutParams(
    ViewGroup.LayoutParams.MATCH_PARENT, 
    ViewGroup.LayoutParams.MATCH_PARENT)); 
+0

不應該高度由textView.layout(0,0,140,180)設置?由於我把綠色背景放在那裏,我可以看到它的高度大約是文本高度的三倍。試圖設置layoutParams,但沒有任何區別。 –

+0

我嘗試改爲textView.layout(0,0,500,500),它沒有影響。這不是設定我相信的寬度和高度的方法。您需要通過LayoutParam進行設置。 – Elye