|
@@ -25,13 +25,17 @@ import android.widget.TextView
|
|
|
import androidx.annotation.ColorInt
|
|
import androidx.annotation.ColorInt
|
|
|
import androidx.appcompat.app.AppCompatActivity
|
|
import androidx.appcompat.app.AppCompatActivity
|
|
|
import androidx.appcompat.view.menu.MenuPopupHelper
|
|
import androidx.appcompat.view.menu.MenuPopupHelper
|
|
|
|
|
+import androidx.appcompat.widget.AppCompatTextView
|
|
|
import androidx.appcompat.widget.PopupMenu
|
|
import androidx.appcompat.widget.PopupMenu
|
|
|
import androidx.core.graphics.record
|
|
import androidx.core.graphics.record
|
|
|
import androidx.core.graphics.withTranslation
|
|
import androidx.core.graphics.withTranslation
|
|
|
|
|
+import androidx.core.text.PrecomputedTextCompat
|
|
|
import androidx.core.view.get
|
|
import androidx.core.view.get
|
|
|
|
|
+import androidx.core.widget.TextViewCompat
|
|
|
import androidx.recyclerview.widget.RecyclerView
|
|
import androidx.recyclerview.widget.RecyclerView
|
|
|
import androidx.viewpager.widget.ViewPager
|
|
import androidx.viewpager.widget.ViewPager
|
|
|
import io.legado.app.help.config.AppConfig
|
|
import io.legado.app.help.config.AppConfig
|
|
|
|
|
+import io.legado.app.help.globalExecutor
|
|
|
import io.legado.app.lib.theme.TintHelper
|
|
import io.legado.app.lib.theme.TintHelper
|
|
|
import splitties.systemservices.inputMethodManager
|
|
import splitties.systemservices.inputMethodManager
|
|
|
import java.lang.reflect.Field
|
|
import java.lang.reflect.Field
|
|
@@ -216,6 +220,23 @@ fun TextView.setHtml(html: String) {
|
|
|
}
|
|
}
|
|
|
}
|
|
}
|
|
|
|
|
|
|
|
|
|
+fun AppCompatTextView.setTextAsync(charSequence: CharSequence) {
|
|
|
|
|
+ globalExecutor.execute {
|
|
|
|
|
+ val precomputedText = PrecomputedTextCompat.create(
|
|
|
|
|
+ charSequence, TextViewCompat.getTextMetricsParams(this),
|
|
|
|
|
+ )
|
|
|
|
|
+ post {
|
|
|
|
|
+ setPrecomputedText(precomputedText)
|
|
|
|
|
+ }
|
|
|
|
|
+ }
|
|
|
|
|
+}
|
|
|
|
|
+
|
|
|
|
|
+fun TextView.setTextIfNotEqual(charSequence: CharSequence?) {
|
|
|
|
|
+ if (text != charSequence) {
|
|
|
|
|
+ text = charSequence
|
|
|
|
|
+ }
|
|
|
|
|
+}
|
|
|
|
|
+
|
|
|
@SuppressLint("RestrictedApi")
|
|
@SuppressLint("RestrictedApi")
|
|
|
fun PopupMenu.show(x: Int, y: Int) {
|
|
fun PopupMenu.show(x: Int, y: Int) {
|
|
|
kotlin.runCatching {
|
|
kotlin.runCatching {
|