Android9.0 이상과 Android8.0에서 발생한 문제를 신경쓰지 않고 이용할 수 있는 CustomTextView를 작성해 보았습니다.
매번 layout xml로 설정하는 것이 귀찮습니다 ...
이전에 투고한 아래 2건에 대해 TextView를 이용할 때 매회 설정을 쓰는 것이 어떻습니까…
Android Pie 대응할 때 TextView의 줄 바꿈 사이에 빠진 이야기
Android8.0에서 TextView에 표시된 문자열의 접힌 위치가 이상합니다.
그래서
문제를 신경쓰지 않고 사용할 수 있는 CustomTextView를 작성해 본 실제 코드는 아래와 같습니다.
import android.content.Context;
import android.os.Build;
import android.text.Layout;
import android.util.AttributeSet;
import androidx.appcompat.widget.AppCompatTextView;
public class CustomTextView extends AppCompatTextView {
public CustomTextView(Context context) {
this(context, null);
}
public CustomTextView(Context context, AttributeSet attrs) {
this(context, attrs, 0);
}
public CustomTextView(Context context, AttributeSet attrs, int defStyleAttr) {
super(context, attrs, defStyleAttr);
versionDifferenceAbsorption();
}
/**
* ここでバージョン毎で起こっている問題が起こらないように設定を行う
*/
private void versionDifferenceAbsorption() {
// Android8.0の場合にはBreakStrategyをsimpleに設定する
if (Build.VERSION.SDK_INT == Build.VERSION_CODES.O) {
this.setBreakStrategy(Layout.BREAK_STRATEGY_SIMPLE);
}
// Android9.0以降ではFallbackLineSpacingをfalseに設定する
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.P) {
this.setFallbackLineSpacing(false);
}
}
}
즉시 움직였다.
Android9.0 측에서 표시를 시도한 xml 설정
<CustomTextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="君がッ\n泣くまで\n殴るのを\nやめないッ!"
android:lineSpacingMultiplier="1.5"
app:layout_constraintBottom_toBottomOf="parent"
app:layout_constraintLeft_toLeftOf="parent"
app:layout_constraintRight_toRightOf="parent"
app:layout_constraintTop_toTopOf="parent" />
Android8.0 측에서 표시를 시도한 xml 설정
<CustomTextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="さすがディオ!俺達に出来ないことを平然とやってのけるッ!"
app:layout_constraintBottom_toBottomOf="parent"
app:layout_constraintLeft_toLeftOf="parent"
app:layout_constraintRight_toRightOf="parent"
app:layout_constraintTop_toTopOf="parent" />
기본 TextView에 표시된 Android 9의 Emulator
사용자 정의 TextView에 표시된 Android 9 Emulator
기본 TextView에 표시된 Android 8.0의 Emulator
사용자 정의 TextView에 표시된 Android 8.0의 Emulator
표시를 확인한 결과!
Android9.0측은 행간이 열리지 않고,Android8.0측은 개행 위치가 이상하게 되어 있지 않기 때문에, 최소한 이전 투고한 내용의 문제는 일어나지 않는 모습
앞으로는 이번에 작성한 CustomTextView를 이용하여 문제를 신경 쓰지 않고 구현하고 싶습니다.
Reference
이 문제에 관하여(Android9.0 이상과 Android8.0에서 발생한 문제를 신경쓰지 않고 이용할 수 있는 CustomTextView를 작성해 보았습니다.), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://qiita.com/kessel/items/6e8e7b4102203e8d7ee9텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)