Button 左边图片右边文字居中显示样式

这篇博客探讨了在Android中如何使Button的内容实现左边图片、右边文字居中显示。传统的drawableLeft属性无法达成理想效果。作者分享了两种成功的方法,一种利用SpannableString和ImageSpan,但图片大小受限于文字高度。文中还展示了实际效果,并表示欢迎交流讨论。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

最近在做的一个个界面,底部导航按钮需要采用Button,而Button显示内容为左边图片右边文字的样式。效果如

分别为四个按钮。查了很久的Button属性,发现Button自带的属性:drawableLeft、drawableTop、drawableBottom等这些属性都满足不了需求,用drawableLeft效果图为:

Button中间的图片和文字无法实现居中显示的效果。

通过网上查阅了些资料,发现两种方法成功的写出想要的效果。第一种:采用SpannableString和ImageSpan结合使用达到该效果,但是图片的大小不能超过文字的高度。

bt1 = (Button)findViewById(R.id.bt1);
		SpannableString spanText = new SpannableString("1标记");
		Drawable d = getResources().getDrawable(R.drawable.main_icon_nearby);
		int b = (int)bt1.getTextSize();
		d.setBounds(0,0,b,b);
		ImageSpan imageSpan = new ImageSpan(d,ImageSpan.ALIGN_BASELINE);
		spanText.setSpan(imageSpan, 0,1,Spannable.SPAN_EXCLUSIVE_EXCLUSIVE);
		bt1.setText(spanText);
效果如就不贴出来了,需要的朋友直接复制代码到编译器上运行下就可以看到了。下面介绍第二种方法:即采用RelativeLayout相对布局和LinearLayout线性布局的嵌套格式,这样XML文件中代码的复杂度冗余度比较大,但是相对比较容易理解。废话不多说,说多了没用直接上代码:
 		<RelativeLayout 
	    	        android:layout_width="0dp"
	    	        android:layout_height="wrap_content"
	    	        android:layout_weight="1">
	    	        <Button
				android:id="@+id/bt2"
				android:layout_width="match_parent"
				android:layout_height="match_parent"
				android:background="@drawable/btbus_seletor"/>
	    	        <LinearLayout 
	    	            android:layout_width="wrap_content"
	    	            android:layout_height="wrap_content"
	    	            android:layout_centerHorizontal="true"
	    	            android:layout_centerVertical="true"
	    	            android:gravity="center">
	    	            <RelativeLayout 
	    	                android:layout_width="wrap_content"
	    	                android:layout_height="wrap_content"
	    	                android:background="@drawable/main_icon_route">
	    	            </RelativeLayout>
	    	            <TextView 
	    	                android:layout_width="wrap_content"
	    	                android:layout_height="wrap_content"
	    	                android:clickable="false"
			    	        android:text="公交" 
			    	        android:textSize="15sp"
			    	        android:textColor="#4F4F4F"/>
	    	        </LinearLayout>
	    	    </RelativeLayout>
里面的Button背景图片是我自己写的一个seletor文件,这里就不贴出来了,根据自己需要设置嘛! 微笑效果:


效果图为什么是这样子?相信有朋友会问。因为我是需要四个Button并列放置,我是从xml预览界面截图的。所以不要怀疑,,,需要的朋友可以参考参考。同时有什么好的建议可以交流学习学习。。。。。吐舌头

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值