沒有無障礙事件/代表不適用於活動,他們也不需要。每個Activity
應該有一個根/內容視圖,該視圖是ViewGroup
的一個實例。這工作很適合我到活動中過濾所有可訪問性事件:
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
View contentView = findViewById(android.R.id.content);
contentView.setAccessibilityDelegate(new View.AccessibilityDelegate(){
@Override
public boolean onRequestSendAccessibilityEvent(ViewGroup host, View child, AccessibilityEvent event) {
Log.wtf("Event: " + event.toString());
return super.onRequestSendAccessibilityEvent(host, child, event);
}
});
}
我還要指出,這話語提示支持字符導航的能力,這樣的解決方案,可以解決一個問題,即話語提示用戶不會看到問題。事實上在某些情況下,這可能會被視爲更糟。無論何時,如果您要更改殘疾人的內容,請仔細閱讀與實際內容相比較的內容。即使公佈是清潔:
"ABC" != "A B C"
例如,在不同的情況下,一個人可能會認爲這種行爲爲「特徵」,如:
"NASA"
一個天真的實現,這可能是剛剛「 toLowerCase「所有內容描述或在所有大寫字母之間添加空格。很顯然,這些解決方案都會產生不同類型的問題。
我的觀點是,如果屏幕上的內容令他們感到困惑,則話語提示用戶可以按字符進行導航。各種平臺上的AT用戶將習慣於他們平臺的「夸克」。通過使用上述解決方案之一,您已經迫使他們使用不同的夸克。有時候,最容易理解的解決方案就是讓"ABC" == "ABC"
,並允許AT用戶自己解決問題。
如果您不打算專門用「理想」方式修復所有字符串,那麼最好不要單獨放置。儘管如此,最好的情況是恰當地考慮這兩個問題,以及在場景中哪種解決方案最適用。
一些我喜歡用內容描述覆蓋的例子,可能會被正則表達式或字符串匹配捕獲。一個好的實現將會發現這些特定的場景,並通過REGEX - >字符串字典修復它們,將其替換爲文本或內容描述屬性,並將其設置爲新的內容描述。
"OFF" -> "off" //This one is super dumb on Google's part. "OFF" shows up on every switch in the OS!
"ON" -> "on" //See above comment.
"NASA" -> "nasa"
etc.
請注意,在我的字典中,我總是朝着這個詞前進,而不是朝着單個角色宣告:)。原因是,我沒有改變字符串的性質。或者更確切地說,在每一個insance符合下列條件:
oldString.equalsIgnoreCase(newString);
現在添加本地化字符串代入公式和幸福......這是一個非常複雜的問題確實。也許只是把事情放在一邊是最好的選擇。