动态生成的按钮,文字没有垂直居中

r00_a2lBUR 2019-12-09 05:16:07

想要的效果是文字能垂直居中,动态生成按钮的代码:

LinearLayout.LayoutParams layoutParams = new LinearLayout.LayoutParams(ViewGroup.LayoutParams.WRAP_CONTENT, 100);
Button result = new Button(context);
result.setLayoutParams(layoutParams);
result.setTextColor(context.getResources().getColor(R.color.color_white));
result.setBackground(context.getResources().getDrawable(R.drawable.shape_blue));


shape_blue.xml

<?xml version="1.0" encoding="utf-8"?>
<shape xmlns:android="http://schemas.android.com/apk/res/android"
android:shape="rectangle">
<!-- 填充的颜色 -->
<solid android:color="@color/colorPrimary" />
<!-- 设置按钮的四个角为弧形 -->
<!-- android:radius 弧形的半径 -->
<corners android:radius="30dip" />
<!--边框的宽度及颜色-->
<stroke android:width="2px" android:color="#fff" />
</shape>

请教大伙,要怎样设置才能让文字垂直居中?
...全文
138 5 打赏 收藏 转发到动态 举报
写回复
用AI写文章
5 条回复
切换为时间正序
请发表友善的回复…
发表回复
r00_a2lBUR 2019-12-10
  • 打赏
  • 举报
回复
引用 5 楼 无fucker说 的回复:
Button,TextView中的字体默认跟边框是有间距的
result.setPadding(0,0,0,0);设置没有间距

太帅了,加上result.setPadding(0,0,0,0);后搞定
雕·不懒惰 2019-12-09
  • 打赏
  • 举报
回复
引用 5 楼 无fucker说 的回复:
Button,TextView中的字体默认跟边框是有间距的
result.setPadding(0,0,0,0);设置没有间距

另外:你高度值设置了100px,radius=30dp,那高度最低都得要60dp,但这跟你手机的dpi有关,px=dpi*dp,如果你手机dpi是2、3或者更高的话,100px是显示不全的
雕·不懒惰 2019-12-09
  • 打赏
  • 举报
回复
Button,TextView中的字体默认跟边框是有间距的
result.setPadding(0,0,0,0);设置没有间距
r00_a2lBUR 2019-12-09
  • 打赏
  • 举报
回复
引用 2 楼 无fucker说 的回复:
添加下layoutParams.gravity= Gravity.CENTER;
看图你的高度100不够吧,改大些或者WRAP_CONTENT,或者result.setTextSize();字体设小些

主要是有圆角 corners android:radius="30dip" 看上去是留了30dip导致;
layoutParams.gravity= Gravity.CENTER 达不到效果;
就想要100那么高,字体太小也不好,
就是想达到

这样的效果,这个是静态布局生成的
雕·不懒惰 2019-12-09
  • 打赏
  • 举报
回复
添加下layoutParams.gravity= Gravity.CENTER;
看图你的高度100不够吧,改大些或者WRAP_CONTENT,或者result.setTextSize();字体设小些

80,350

社区成员

发帖
与我相关
我的任务
社区描述
移动平台 Android
androidandroid-studioandroidx 技术论坛(原bbs)
社区管理员
  • Android
  • yechaoa
  • 失落夏天
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧