目前我有一个像这样的spannableString,图标位于标题字符串的左侧。问题是,有没有办法让图标在字符串上方,而图标是对齐中心?
这样的样本:
[] <==== This is the icon
TitleTest <=== This is the title
ABCD
由于
这是我的代码尝试:
Drawable image = context.getResources().getDrawable(R.drawable.ic_launcher);
image.setBounds(0, 0, image.getIntrinsicWidth(), image.getIntrinsicHeight());
// Replace blank spaces with image icon
SpannableString sb = new SpannableString(" " + tabTitles[position]);
ImageSpan imageSpan = new ImageSpan(image, ImageSpan.ALIGN_BASELINE);
sb.setSpan(imageSpan, 0, 1, Spannable.SPAN_EXCLUSIVE_EXCLUSIVE);
return sb;
感谢您的帮助
答案 0 :(得分:1)
我今天看https://guides.codepath.com/android/Google-Play-Style-Tabs-using-TabLayout并有同样的问题。为SpannableString添加换行符对我有用,因此以下修改将起到作用:
SpannableString sb = new SpannableString(" \n" + tabTitles[position]);
答案 1 :(得分:0)
将三个视图(ImageView for icon和2 TextView
s)放在垂直LinearLayout
中,并使用XML中的android:layout_gravity
属性将视图置于LinearLayout
的中心位置。另外,将android:gravity
上的TextView
属性设置为“中心”,使文本居中于TextView
。
如果您不想使用XML(似乎就是这种情况),可以使用LinearLayout.LayoutParams
构造函数设置layout_gravity,其中包含width,height和GRAVITY参数。可以使用mTextView.setGravity(Gravity.CENTER);
答案 2 :(得分:0)
只需使用drawableTop
属性即可。
<TextView
android:drawableTop="@drawable/my_drawable"/>
或者来自代码:
myTextView.setCompoundDrawablesWithIntrinsicBounds(
0, R.drawable.my_drawable, 0, 0);