我用下面的方法,編程創建的LinearLayout和兩個textviews填充它,添加文本,然後把它變成我以後使用一個以上的層中繪製形狀。然而,我注意到我不能創建一個小的字體大小 - 它似乎停留在相對較小的最小尺寸,並且我在該值下面指定的任何東西似乎都使它看起來越來越模糊(但仍然是相同的尺寸)。這可能是什麼原因?發生Android的:不能讓小字號的綱領性textviews
這種行爲是否我使用TypedValue.COMPLEX_UNIT_SP。
編輯:這大小保持,即使我指定喜歡的東西可笑一樣:
.setTextSize(TypedValue.COMPLEX_UNIT_SP, 60);
它沒有得到任何大 - 它只是變得「更清晰」。
編輯2:如果我指定頂部文本視圖具有非常大的尺寸,那麼我設置第二個文本視圖越小,它變成 - 比例(例如,如果我將頂部設置爲100,底部爲50,看起來與頂部10和底部5完全相同)。但是,我絕不能減小頂級文本視圖的大小。
編輯3:如果我刪除textviews之一,只留下另一個在佈局一個TextView的 - 我不能在所有的改變大小。我只能根據我設置數字的低度來做出或多或少的模糊,但它總是會在屏幕上顯示完全相同的大小。
private Drawable createTextLayer() {
LinearLayout newLinearLayout = new LinearLayout(getContext());
newLinearLayout.setOrientation(LinearLayout.VERTICAL);
newLinearLayout.setGravity(Gravity.CENTER);
LinearLayout.LayoutParams layoutParams = new LinearLayout.LayoutParams(LinearLayout.LayoutParams.MATCH_PARENT, LinearLayout.LayoutParams.MATCH_PARENT);
newLinearLayout.setBackgroundColor(getColor(R.color.somecolor));
newLinearLayout.setLayoutParams(layoutParams);
TextView headlinetv = new TextView(getContext());
TextView bodytv = new TextView(getContext());
headlinetv.setText(headlineText);
headlinetv.setTextSize(7);
headlinetv.setGravity(Gravity.CENTER);
bodytv.setText(bodyText);
bodytv.setTextSize(6);
bodytv.setGravity(Gravity.CENTER);
newLinearLayout.addView(headlinetv);
newLinearLayout.addView(bodytv);
newLinearLayout.setDrawingCacheEnabled(true);
newLinearLayout.measure(MeasureSpec.makeMeasureSpec(0, MeasureSpec.UNSPECIFIED),
MeasureSpec.makeMeasureSpec(0, MeasureSpec.UNSPECIFIED));
newLinearLayout.layout(0, 0, newLinearLayout.getMeasuredWidth(), newLinearLayout.getMeasuredHeight());
newLinearLayout.buildDrawingCache(true);
Bitmap b = Bitmap.createBitmap(newLinearLayout.getDrawingCache());
newLinearLayout.setDrawingCacheEnabled(false);
return new BitmapDrawable(getResources(), b);
}
setTextSize使用COMPLEX_UNIT_SP默認 – Blackbelt