学习地址
XA49RPO5ZT8MBBF%RQ_01G9.png问题描述
如上面,黄色的是一个TextView设置shape完成的,黑色的就是正常的TextView,如果我们单独采用FrameLayout,右边黑色的会被黄色的挡住,如果采用Linlayout,黑色的第二行的首行不会在黄色的左边缘
学习到的知识点
我们采用LeadingMarginSpan.Standard(int first, int rest) 方法,第一个参数表示首行缩进多少像素,第二个参数表示其余行数缩进多少像素
解决办法
<FrameLayout
android:layout_width="match_parent"
android:layout_height="wrap_content">
<!--黄色的-->
<TextView
android:id="@+id/bt_fragment_goods_info_title"
android:layout_width="wrap_content"
android:layout_height="@dimen/dp_20"
android:paddingLeft="@dimen/dp_10"
android:paddingRight="@dimen/dp_10"
android:gravity="center"
android:background="@drawable/shape_rectangle_solid_ffb400_corner5"
android:text=""
android:textColor="@color/white"
android:textSize="@dimen/sp_12" />
<TextView
android:id="@+id/tv_goods_title"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:ellipsize="end"
android:gravity="left"
android:lineSpacingExtra="@dimen/dp_4"
android:maxLines="2"
android:text=""
android:textColor="#222222"
android:textSize="@dimen/sp_15" />
</FrameLayout>
TextView tvArea = rootView.findViewById(R.id.bt_fragment_goods_info_title);
TextView tvGoodsTitle= rootView.findViewById(R.id.tv_goods_title);
tvArea.setText("啦啦啦啦啦");
tvArea.post(new Runnable() {
@Override
public void run() {
SpannableString spannableString = new SpannableString("雅诗兰黛口红333 倾慕哑光唇膏保湿防水干枫叶色杨幂同款");
//tvArea.getWidth()就是黄色的宽度
LeadingMarginSpan.Standard what = new LeadingMarginSpan.Standard(tvArea.getWidth()+ DensityUtil.getInstance().dip2px(5), 0);
spannableString.setSpan(what , 0, spannableString.length(), SpannableString.SPAN_INCLUSIVE_INCLUSIVE);
tvGoodsTitle.setText(spannableString);
}
});
网友评论