我有这个TextView
自动调整大小:
<?xml version="1.0" encoding="utf-8"?>
<android.support.constraint.ConstraintLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:id="@+id/rootView">
<TextView
android:id="@+id/my_text_view"
android:layout_width="0dp"
android:layout_height="0dp"
android:gravity="bottom|center_horizontal"
android:textAllCaps="true"
android:textColor="#435f7b"
android:maxLines="1"
app:autoSizeTextType="uniform"
app:autoSizeMinTextSize="10sp"
app:autoSizeMaxTextSize="36sp"
app:layout_constraintBottom_toBottomOf="parent"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toTopOf="parent"
/>
</android.support.constraint.ConstraintLayout>
android:text
是通过编程设置的。
我需要应用LinearGradient
:
Shader shader = new LinearGradient(0, 0, 0, textView.getLineHeight()*1.1f, color1, color2, Shader.TileMode.REPEAT);
textView.getPaint().setShader(shader);
,但是它显然使用错误的尺寸来计算文本限制,因此看起来像这样(例如,在Android 6.0上):
使用FragmentStatePagerAdapter和PagerAdapter,将布局用作Fragment。
如何使其起作用?它可以在其他TextView
集合上正常工作,而不会自动调整大小,而只能在textSize
上使用Fragment
。
非常感谢!
答案 0 :(得分:0)
这是您根据EugenPechanec的注释查找的代码。
TextView textView = findViewById(R.id.my_text_view);
textView.addOnLayoutChangeListener(new View.OnLayoutChangeListener() {
@Override
public void onLayoutChange(View v, int left, int top, int right, int bottom, int oldLeft, int oldTop, int oldRight, int oldBottom) {
int color1 = Color.RED; // Or whatever color you need.
int color2 = Color.BLUE;
TextView tv = (TextView) v;
Shader shader = new LinearGradient(0, 0, 0, tv.getLineHeight() * 1.1f, color1, color2, Shader.TileMode.REPEAT);
tv.getPaint().setShader(shader);
}
});