語言

BidiFormatter 類別

定義

用於格式化文字以在可能方向相反的情境下顯示且不會造成混亂的工具類別。

[Android.Runtime.Register("android/text/BidiFormatter", DoNotGenerateAcw=true)]
public sealed class BidiFormatter : Java.Lang.Object
[<Android.Runtime.Register("android/text/BidiFormatter", DoNotGenerateAcw=true)>]
type BidiFormatter = class
    inherit Object
繼承
BidiFormatter
屬性

備註

用於格式化文字以在可能方向相反的情境下顯示且不會造成混亂的工具類別。 上下文的方向性在格式化器建立時設定,文字的方向性可以在已知時估算或傳遞。

若要支援低於 android.os.Build.VERSION_CODES#JELLY_BEAN_MR2的版本,可以使用支援函式庫的 androidx.core.text.BidiFormatter 類別。

這些 API 提供以下功能:

1. Bidi Wrapping 當一種語言的文字混合到另一種相反方向語言的文件中時,例如當英文商業名稱嵌入希伯來文文本中時,插入的字串及其周圍文字都可能錯誤顯示,除非插入字串在「包裝器」中明確分隔:

- 宣告其方向性,使字串正確顯示。 這可以透過 Unicode 的 bidi 格式化代碼 #unicodeWrap 等方式完成。

- 隔離字串的方向性,使其不會過度影響周圍內容。 目前,這只能使用與上下文方向相同的隱形 Unicode 字元(LRM 或 RLM)以及上述方向性宣告,從而「重置」方向性至上下文的方向性。 「重置」可能需要在弦的兩端都做。 如果字串後沒有「重置」,字串會「黏附」在一個數字上,或邏輯上分開的相反方向文字,即使這些文字被空格和標點等中性內容分隔。 如果字串前沒有「重置」,也可以發生類似的事,但前提是文字方向較相反,而不是數字。 一種方法是只在每字串後「重置」方向,理論上如果前一對向文字本身是雙摺(bidi wraped),那麼在它之後的「重置」可以防止卡住。 (只在每個字串前進行「重置」絕對行不通,因為我們不想要求 bidi 包裹的數字,而反向 bidi 包裹的字串後面可以接著數字。)不過,最安全的策略是對每個字串的兩端進行「重置」,因為 RTL 訊息的翻譯通常包含未翻譯的拉丁字母品牌名稱和技術術語,其中一個後面可能會接著一個 bidi 包裹的值。 另一方面,當有此類訊息時,最好在訊息翻譯時手動執行「重置」,因為訊息的反向文字後面可能會接上插入的數字,而我們本來就不會用 bidi 換行。 因此,目前預設值是字串之後才「重置」。 作為「重置」的替代方案,HTML、CSS 和 Unicode 標準的最新新增內容允許隔離成為方向性宣告的一部分。 這種隔離方式比「重置」更好,因為它佔用的空間更少,不需要知道上下文方向,效果比「重置」溫和,且能保護弦的兩端。 不過,我們目前尚未允許使用,因為所需平台尚未支援。

提供這些包裝服務是 bidi formatter 的基本目的。

2. 方向性估計 如何知道即將插入周圍文字的字串是否有相同的方向性? 在許多情況下,當你撰寫插入程式碼時,例如將本地化訊息插入本地化頁面時,大家都知道必須如此。 在這種情況下,完全不需要使用BIDI格式化器。 在其他情況下,它不必與上下文相同,而是常數(例如網址總是 LTR)或已知。 在剩餘情況下,例如字串由使用者輸入或來自資料庫時,字串的語言(因此其方向性)事先未知,必須在執行時估算。 bidi 格式化器可利用預設的先強估計演算法自動完成此操作。 也可以設定為使用自訂的方向性估計物件。

的 android.text.BidiFormatterJava 檔。

此頁面的部分是根據 Android 開放原始碼專案所建立和共用的工作進行修改,並根據 Creative Commons 2.5 屬性授權中所述的詞彙使用。

屬性

名稱 Description
Class

傳回這個 Object的運行時間類別。

(繼承來源 Object)
Handle

基礎Android實例的句柄。

(繼承來源 Object)
Instance

用來建立預設區域方向性的 BidiFormatter 實例。

IsRtlContext
JniIdentityHashCode

取得由互通執行時指派給此 Java 對等端的身份雜湊碼。

(繼承來源 Object)
JniManagedPeerState

用於格式化文字以在可能方向相反的情境下顯示且不會造成混亂的工具類別。

(繼承來源 JavaObject)
JniPeerMembers

用於格式化文字以在可能方向相反的情境下顯示且不會造成混亂的工具類別。

PeerReference

取得這個 Java 節點的 JNI 物件參考。

(繼承來源 Object)
StereoReset
ThresholdClass

此 API 支援 Mono for Android 基礎架構,並非直接從你的程式碼中使用。

(繼承來源 Object)
ThresholdType

此 API 支援 Mono for Android 基礎架構,並非直接從你的程式碼中使用。

(繼承來源 Object)

方法

名稱 Description
Clone()

建立並傳回這個 對象的複本。

(繼承來源 Object)
Construct(JniObjectReference, JniObjectReferenceOptions)

用於格式化文字以在可能方向相反的情境下顯示且不會造成混亂的工具類別。

(繼承來源 JavaObject)
Dispose()

釋放該 Java 節點所持有的資源。

(繼承來源 Object)
Dispose(Boolean)

釋放該 Java 節點所持有的資源。

(繼承來源 Object)
DisposeUnlessReferenced()

用於格式化文字以在可能方向相反的情境下顯示且不會造成混亂的工具類別。

(繼承來源 JavaObject)
Equals(Object)

用於格式化文字以在可能方向相反的情境下顯示且不會造成混亂的工具類別。

(繼承來源 JavaObject)
Equals(Object)

指出其他物件是否「等於」這個物件。

(繼承來源 Object)
GetHashCode()

傳回此物件的雜湊碼值。

(繼承來源 Object)
GetInstance(Boolean)

在上下文方向性下,用 Factory 建立 BidiFormatter 實例。

GetInstance(Locale)

根據上下文地點,建立 BidiFormatter 實例的工廠。

IsRtl(ICharSequence)

運作方式類似 #isRtl(String),但採用 CharSequence 而非字串

IsRtl(String)

利用預設文字方向啟發式估算字串的方向性。

JavaFinalize()
已淘汰.

當垃圾收集決定不再參考物件時,垃圾收集行程在 物件上呼叫。

(繼承來源 Object)
Notify()

喚醒正在等候此物件監視器的單一線程。

(繼承來源 Object)
NotifyAll()

喚醒正在等候此物件監視器的所有線程。

(繼承來源 Object)
SetHandle(IntPtr, JniHandleOwnership)

設定 Handle 屬性。

(繼承來源 Object)
SetPeerReference(JniObjectReference, JniObjectReferenceOptions)

用於格式化文字以在可能方向相反的情境下顯示且不會造成混亂的工具類別。

(繼承來源 JavaObject)
ToArray<T>()

從這個 Java 陣列包裝器建立一個受管理陣列。

(繼承來源 Object)
ToString()

傳回物件的字串表示。

(繼承來源 Object)
UnicodeWrap(String, Boolean)

運作方式類似 #unicodeWrap(CharSequence, TextDirectionHeuristic, boolean),但使用格式化器的預設方向估計演算法。

UnicodeWrap(String, ITextDirectionHeuristic, Boolean)

運作方式類似 #unicodeWrap(String, TextDirectionHeuristic, boolean),但採用 CharSequence 而非字串

UnicodeWrap(String, ITextDirectionHeuristic)

運作方式類似 #unicodeWrap(CharSequence, TextDirectionHeuristic, boolean),但假設 isolate 為真。

UnicodeWrap(String)

運作方式類似 #unicodeWrap(CharSequence, TextDirectionHeuristic, boolean),但使用格式化器的預設方向估計演算法,並假設 isolate 為真。

UnicodeWrapFormatted(ICharSequence, Boolean)

運作方式類似 #unicodeWrap(CharSequence, TextDirectionHeuristic, boolean),但使用格式化器的預設方向估計演算法。

UnicodeWrapFormatted(ICharSequence, ITextDirectionHeuristic, Boolean)

運作方式類似 #unicodeWrap(String, TextDirectionHeuristic, boolean),但採用 CharSequence 而非字串

UnicodeWrapFormatted(ICharSequence, ITextDirectionHeuristic)

運作方式類似 #unicodeWrap(CharSequence, TextDirectionHeuristic, boolean),但假設 isolate 為真。

UnicodeWrapFormatted(ICharSequence)

運作方式類似 #unicodeWrap(CharSequence, TextDirectionHeuristic, boolean),但使用格式化器的預設方向估計演算法,並假設 isolate 為真。

UnregisterFromRuntime()

將此 Java 節點從互通執行時中取消註冊。

(繼承來源 Object)
Wait()

讓目前線程等候直到喚醒為止,通常是藉由em <notified/em>或<em>interrupted</em> 來喚醒它。<>

(繼承來源 Object)
Wait(Int64, Int32)

讓目前的線程等到喚醒為止,通常是因為 <em>notified</em> 或 <em>interrupted</em>,或直到經過一定數量的實時為止。

(繼承來源 Object)
Wait(Int64)

讓目前的線程等到喚醒為止,通常是因為 <em>notified</em> 或 <em>interrupted</em>,或直到經過一定數量的實時為止。

(繼承來源 Object)

明確介面實作

名稱 Description
IJavaPeerable.Disposed()

用於格式化文字以在可能方向相反的情境下顯示且不會造成混亂的工具類別。

(繼承來源 JavaObject)
IJavaPeerable.Finalized()

用於格式化文字以在可能方向相反的情境下顯示且不會造成混亂的工具類別。

(繼承來源 JavaObject)
IJavaPeerable.JniObjectReferenceControlBlock

用於格式化文字以在可能方向相反的情境下顯示且不會造成混亂的工具類別。

(繼承來源 JavaObject)
IJavaPeerable.SetJniIdentityHashCode(Int32)

用於格式化文字以在可能方向相反的情境下顯示且不會造成混亂的工具類別。

(繼承來源 JavaObject)
IJavaPeerable.SetJniManagedPeerState(JniManagedPeerStates)

用於格式化文字以在可能方向相反的情境下顯示且不會造成混亂的工具類別。

(繼承來源 JavaObject)
IJavaPeerable.SetPeerReference(JniObjectReference)

用於格式化文字以在可能方向相反的情境下顯示且不會造成混亂的工具類別。

(繼承來源 JavaObject)

擴充方法

名稱 Description
GetJniTypeName(IJavaPeerable)

取得實例 self類型的 JNI 名稱。

JavaAs<TResult>(IJavaPeerable)

試著強制self輸入 TResult,檢查 強制在 Java 端是否有效。

JavaCast<TResult>(IJavaObject)

執行 Android 執行時間檢查的類型轉換。

JavaCast<TResult>(IJavaObject)

用於格式化文字以在可能方向相反的情境下顯示且不會造成混亂的工具類別。

TryJavaCast<TResult>(IJavaPeerable, TResult)

試著強制self輸入 TResult,檢查 強制在 Java 端是否有效。

適用於