android - 以编程方式在 TextView 上设置填充
问题描述
我动态/以编程方式将 TextViews 添加到预设的 LinearLayout 但由于某种原因设置填充不起作用。文本和字体都按预期显示,但填充似乎不起作用。与其他在线解决方案相比,这似乎应该有效。我究竟做错了什么?
@Override
public void onBindViewHolder(@NonNull ViewHolder holder, int position) {
final CustomItem listItem = listItems.get(position);
holder.Heading.setText(listItem.getHeading());
ArrayList<String> directions = listItem.getDirections();
for(int i = 0; i < directions.size(); i++) {
TextView step = new TextView(context);
step.setPadding(20, 20, 0, 20);
step.setText(directions.get(i));
step.setTypeface(ResourcesCompat.getFont(context, R.font.lato_light));
holder.CustomLayout.addView(step);
}
}
public class ViewHolder extends RecyclerView.ViewHolder{
public LinearLayout LegLayout;
public TextView Heading;
public ViewHolder(View itemView) {
super(itemView);
Heading = itemView.findViewById(R.id.heading);
LegLayout = itemView.findViewById(R.id.directionsLayout);
}
}
解决方案
看来您正在高分辨率设备上进行验证。您需要使用 DP 到 PX 转换,然后将该转换后的值用于setPadding()
;
将dp转换为像素的方法是
public static int dpToPx(int dp) {
return (int) (dp * Resources.getSystem().getDisplayMetrics().density);
}
你的setPadding
电话是
step.setPadding(dpToPx(20), dpToPx(20), 0, dpToPx(20));
推荐阅读
- html - 如何比较视图中模型的日期和当前日期
- mysql - 具有多个关系的聊天应用程序中未读消息的 SQL
- nginx - Kubernetes Nginx Ingress 文件上传返回 502
- sql - 在 PostgreSQL 中的 where 语句中根据多个条件过滤行
- python-3.x - How to remove certain classes (labels and images) from existing TensorFlow datasets? (Fashion MNIST)
- ruby - 如何访问在 rspec 中的方法运行时创建的对象?
- powershell - 尝试将字符插入文件名的问题
- firebase - 使用 fcm 通知唤醒本机应用程序
- python - 需要帮助计算稀疏矩阵的余弦相似度
- python - 如何在 Python 中的每个循环后打印一个递增的数字?