一直試圖找出一年現在。很久以前就有了一個臨時的解決方法,但是當我準備在已開發的應用程序中添加新功能時,問題又回來了。如何在android應用程序中動態設置背景顏色?
主要目標:讓用戶能夠選擇幾乎任何顏色作爲應用程序的背景。
當前迭代:我有2個可繪製的圖像,一個綠色,一個藍色。用戶能夠在兩者之間切換,但只能通過:
if (bgColor) {
getWindow().setBackgroundDrawable(getResources().getDrawable(R.drawable.custom_blue_background_simple));
}
else {
getWindow().setBackgroundDrawable(getResources().getDrawable(R.drawable.custom_green_background));
}
}
博客上,如果用戶更改默認從綠色的背景下,以藍色布爾。
現在,我想切換到的顏色,而不是可繪,我曾嘗試:
LayoutInflater layInflate = (LayoutInflater) getSystemService(Context.LAYOUT_INFLATER_SERVICE);
View view = layInflate.inflate(R.layout.main_activity_layout, null);
mainLayout = (RelativeLayout) view.findViewById(R.id.mainActivityRelativeLayoutId);
mainLayout.setBackgroundResource(R.color.colorRed);
,但它不會做任何事情!
因此,然後我嘗試像使用可繪製圖像一樣使用它,但顏色(類型int)不是類型可繪製的!所以這段代碼也不起作用。
困境和問題:我有一個顏色選擇器設置/偏好。用戶可以從中挑選任何顏色,並將其保存爲int類型的顏色。 它成功地接受文本顏色:
textView.setTextColor(colorPickerColor);
colorPickerColor是從顏色選擇器優先檢索int類型的變量
但是,試圖用它來改變佈局或意見的背景時,它什麼都不做。即使設置常量/硬編碼顏色也不會改變顏色(如上面的代碼所示)。我用顏色改變背景的唯一方法是用戶可繪製(現在爲我工作,但效率非常低,因爲我必須爲每種可選顏色提供單獨的可繪圖,可能爲數百或數十億),或者顏色的十六進制代碼,但硬編碼到佈局的XML中,因爲將它放在代碼中什麼也不做(因爲用戶將無法選擇,所以不會有用)。
什麼是正確的方式來改變一個佈局的背景顏色通過指定一個類型爲int的顏色以編程方式/動態通過代碼?我的應用程序支持的最小API是14
注意:我搜索了,但是出現的每個結果都沒有關聯,或者沒有工作。
你嘗試過'view.setBackgroundColor(int color)'嗎?用法示例:'mainLayout.setBackgroundColor(0xFF000000);' – Isaac
@Isaac正確。記住領先的FF,因此它完全不透明。 –
@isaac這不會做任何事情。這不就是我在做什麼嗎? –