【发布时间】:2018-05-09 01:50:30
【问题描述】:
我在一个水平布局中有两个文本视图,第一个是普通文本,第二个是可点击的不同颜色。
XML
<!--inside rootlayout..-->
<LinearLayout
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_gravity="center_horizontal"
android:layout_margin="10dp"
android:orientation="horizontal">
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_gravity="center_horizontal"
android:gravity="center_horizontal"
android:maxLines="2"
android:text="By clicking sign up, you agree to our "
android:textColor="@color/black"
android:textSize="12sp"/>
<TextView
android:textStyle="bold"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:gravity="center_horizontal"
android:text="terms and conditions"
android:textColor="@color/colorPrimary"
android:textSize="12sp"
android:clickable="true"/>
</LinearLayout>
它让我在大屏幕(4.7 英寸及以上)上看起来很棒, 但是当屏幕尺寸较小时,第二个文本视图会变得很奇怪。!我希望它自动将自己定位在第一个 textview 下方或使其父布局方向垂直..!!
这是它的外观。!
更新 #1
为什么ForegroundColorSpan 不会改变!?无论我设置什么颜色资源,它总是显示蓝色或黑色。!??
private void handleTermsConditions() {
SpannableStringBuilder stringBuilder = new SpannableStringBuilder(termsTxt.getText());
stringBuilder.setSpan(new StyleSpan(Typeface.BOLD), 38, 58, 0);
int color = ContextCompat.getColor(RegistrationActivity.this, R.color.colorPrimary);
ForegroundColorSpan fcs = new ForegroundColorSpan(color);
stringBuilder.setSpan(fcs, termsTxt.getText().length() - 20, termsTxt.getText().length(),
Spanned.SPAN_EXCLUSIVE_EXCLUSIVE);
ClickableSpan clickableSpan = new ClickableSpan() {
@Override
public void onClick(View widget) {
Toast.makeText(RegistrationActivity.this, "Click", Toast.LENGTH_SHORT)
.show();
}
};
stringBuilder.setSpan(clickableSpan, 38, 58, Spanned.SPAN_POINT_MARK);
termsTxt.setMovementMethod(LinkMovementMethod.getInstance());
termsTxt.setText(stringBuilder);
}
【问题讨论】:
-
我认为它是自动发生的......这取决于空间,如果它有足够的空间,那么它就像在第一个屏幕中一样
标签: java android xml textview android-linearlayout