如果我們將無障礙字體由大變小或由小變大,然后回傳應用程式,則不會保留視圖的可見性;這意味著如果視圖在應用程式中不可見或消失,并且字體大小在可訪問性中發生變化并回傳到應用程式,我們將看到該視圖可見。
例子,
class MainActivity : AppCompatActivity(R.layout.activity_main) {
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
findViewById<Button>(R.id.b3).setOnClickListener {
findViewById<Button>(R.id.b2).visibility = GONE
}
}
}
布局:
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical">
<Button
android:id="@ id/b1"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="something" />
<Button
android:id="@ id/b2"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="something big" />
<Button
android:id="@ id/b3"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="click"
app:layout_constraintLeft_toLeftOf="parent"
app:layout_constraintTop_toBottomOf="@ id/layout" />
</LinearLayout>
現在,單擊“單擊”按鈕并轉到設定-> 輔助功能-> 字體-> 更改并回傳應用程式。隱藏的按鈕再次可見。
除了將值保留在其他變數中并稍后設定之外,還有其他解決方法嗎?
uj5u.com熱心網友回復:
現在,單擊“單擊”按鈕并轉到設定-> 輔助功能-> 字體-> 更改并回傳應用程式。隱藏的按鈕再次可見。
您正在進行配置更改。有很多很多配置更改,例如:
- 方向更改(適用于支持縱向和橫向的應用程式)
- 啟用/禁用暗模式
- 區域設定/語言更改
- 視窗大小調整(用于分屏和自由形式的多視窗環境)
- 字體比例更改或密度比例(“螢屏縮放”)更改
- 等等
除了將值保留在其他變數中并稍后設定之外,還有其他解決方法嗎?
一般來說,這也行不通。您現有的活動正在被銷毀和重新創建。當舊活動消失時,舊活動中的任何欄位都會消失。
該檔案涵蓋了配置更改,以及任何有關 Android 應用程式開發的體面書籍或課程。您的主要選擇是:
使用保存的實體狀態
Bundle或 aViewModel來保存資料,然后您可以在新活動中使用這些資料將您的 UI 恢復到配置更改后應處于的任何狀態;或者選擇退出配置更改并自行處理所有 UI 更新(例如,將所有顯示的文本設定為新語言以進行區域設定更改)
前者是View基于經典的 UI 開發的典型方法,正如您所做的那樣。后者在 Jetpack Compose 中越來越受歡迎,Jetpack Compose 將配置更改作為其現有重組系統的一部分進行處理。
轉載請註明出處,本文鏈接:https://www.uj5u.com/qiye/373527.html
標籤:安卓 安卓布局 可达性 android-可访问性
上一篇:java.lang.IllegalStateException:view!!.findViewById(R.id.dog_image)不能為空
