Android中如何通过代码使用sdp/ssp设置TextView的尺寸?
用代码结合sdp/ssp设置TextView属性的方法
核心逻辑
sdp/ssp是适配屏幕密度的单位,代码中需要通过资源引用获取其转换后的像素值,再传入View的对应方法。
1. 用ssp设置文字大小
ssp用于字体适配,先通过资源获取转换后的像素值,再指定像素单位设置文字大小:
TextView tasks = new TextView(this); // 假设你在dimens.xml中定义了16ssp的尺寸 int textSizePx = getResources().getDimensionPixelSize(R.dimen._16ssp); tasks.setTextSize(TypedValue.COMPLEX_UNIT_PX, textSizePx);
2. 用sdp设置边距
原生View没有直接的setMargin方法,需通过MarginLayoutParams设置:
// 获取sdp转成的像素边距值 int marginLeftPx = getResources().getDimensionPixelSize(R.dimen._10sdp); int marginTopPx = getResources().getDimensionPixelSize(R.dimen._5sdp); // 获取或创建MarginLayoutParams实例 ViewGroup.MarginLayoutParams params = (ViewGroup.MarginLayoutParams) tasks.getLayoutParams(); if (params == null) { params = new ViewGroup.MarginLayoutParams(ViewGroup.LayoutParams.MATCH_PARENT, ViewGroup.LayoutParams.WRAP_CONTENT); } // 赋值边距 params.leftMargin = marginLeftPx; params.topMargin = marginTopPx; tasks.setLayoutParams(params);
3. 用sdp设置View高度
LayoutParams的height参数传入sdp转换后的像素值即可:
// 假设定义了40sdp的高度资源 int heightPx = getResources().getDimensionPixelSize(R.dimen._40sdp); ViewGroup.LayoutParams l1 = new ViewGroup.LayoutParams(ViewGroup.LayoutParams.MATCH_PARENT, heightPx); tasks.setLayoutParams(l1);
4. 用sdp设置内边距
直接调用setPadding方法,传入sdp转换后的像素值:
int paddingPx = getResources().getDimensionPixelSize(R.dimen._8sdp); tasks.setPadding(paddingPx, paddingPx, paddingPx, paddingPx);
内容的提问来源于stack exchange,提问作者Deepak
相关产品推荐
相关产品推荐

