首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 編程語言 >  >> 更多程式語言 >> 程式設計綜合問答

Android ListView 文字變灰:Adapter 使用 getApplicationContext() 導致樣式異常

     編輯:程式設計綜合問答

問題現象

ListView 項目文字顯示為灰色(禁用狀態樣式),但可點選,資料正常。

根本原因

TableListAdapter 建構時傳入 getApplicationContext(),導致 LayoutInflater 使用應用程式主題而非 Activity 主題,缺少 ListView 項目啟用狀態的樣式屬性。

修正方法


// 錯誤
TableListAdapter tblAdapter = new TableListAdapter(data, getApplicationContext());
// 正確
TableListAdapter tblAdapter = new TableListAdapter(data, ChaZhuoActivity.this);

或在 getView 中使用 parent.getContext() 取得正確主題上下文。

原理

  • Activity 繼承 ContextThemeWrapper,擁有完整 UI 主題。
  • Application Context 無 UI 主題,僅供全域資源存取。
  • 建立 View 時必須使用具備主題的 Context,否則樣式(文字顏色、背景、選中態)會回退到預設(常為灰色)。
  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved