您的位置:首页 > Web前端 > CSS

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

2014-05-20 09:18 567 查看
最近在做的一个个界面,底部导航按钮需要采用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预览界面截图的。所以不要怀疑,,,需要的朋友可以参考参考。同时有什么好的建议可以交流学习学习。。。。。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: 
相关文章推荐