當用戶單擊菜單中的項目時,onOptionsItemSelected
觸發傳遞MenuItem
作爲參數。這通過MenuItem
延伸TextView
和我們可以從menu.findItem()
方法得到不一樣。 要訪問此用戶需要單擊該項目,我想訪問此對象,而無需用戶單擊菜單中的項目。以編程方式訪問MenuItem以更改文本顏色
2
A
回答
2
在恢復中,只需調用findViewById並將其轉換爲TextView。 您需要在計時器中進行此操作,以便後續延遲您的代碼,直到視圖變爲由菜單渲染爲止。 對我來說是這樣的
if (!created) { // for first resume only
created = true;
Timer t = new Timer();
t.schedule(new TimerTask() { // Might be done in better way, dont know yet
@Override
public void run() {
try {
while true {
final Object o = findViewById(R.id.mServerTime);
if (o == null) {
try {
Thread.sleep(1000);
} catch (Exception exp) {
}
} else {
if (o != null && o instanceof TextView) {
runOnUiThread(new Runnable() {
@Override
public void run() {
((TextView) o).setTextColor(Color.WHITE);
}
});
}
break;
}
}
}catch (Exception exp) {}
}
},1000);
0
我不能發佈在上面的答覆意見,所以我在寫另一個答案。知道何時該視圖被實際放置在屏幕上的更可靠的方法是觀察它的ViewTreeObserver如:
public class ActivityMain extends Activity {
// Instance variables
OnLayoutReadyListener onLayoutReadyListener = new OnLayoutReadyListener();
View v;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
v = findViewById(R.id.mServerTime);
v.getViewTreeObserver().addOnGlobalLayoutListener(onLayoutReadyListener);
}
class OnLayoutReadyListener implements ViewTreeObserver.OnGlobalLayoutListener {
@Override
public void onGlobalLayout() {
// this will be called once view V is placed and measured on the screen
v.setTextColor(Color.WHITE);
// remove this listener to prevent any additional callbacks
v.getViewTreeObserver().removeOnGlobalLayoutListener(onLayoutReadyListener);
}
}
}
相關問題
- 1. 如何以編程方式更改ActionBar menuitem文本顏色?
- 2. 以編程方式更改colorControlActivated顏色
- 3. 如何以編程方式更改文本的顏色?
- 4. 以編程方式更改TextView文本顏色
- 5. 以編程方式更改某些文本的背景顏色
- 6. 如何在編程時以編程方式更改按鈕文本顏色?
- 7. 以編程方式更新顏色
- 8. 如何以編程方式更改imageView的色調顏色?
- 9. 以編程方式更改應用程序中特定顏色的所有文本的文本顏色? Xcode
- 10. 以編程方式更改GridView控件的行顏色格式
- 11. 以編程方式更改膚色
- 12. Windows 8主題顏色 - 以編程方式訪問
- 13. 以編程方式更改textview中某些文本的背景顏色
- 14. 以編程方式更改winforms按鈕文本顏色不起作用
- 15. Android:無法以編程方式更改按鈕的文本顏色
- 16. 如何以編程方式更改工具欄文本的顏色
- 17. 如何以編程方式更改偏好設置的摘要文本顏色?
- 18. 以編程方式使用AppCompat更改操作欄背景和文本顏色
- 19. 如何使用JSON以編程方式更改文本的顏色
- 20. 菜單項文本顏色以編程方式更改不起作用?
- 21. 以編程方式在C中更改顏色#
- 22. 如何以編程方式更改TabLayout標題顏色?
- 23. 以編程方式更改自定義ListView的顏色?
- 24. 如何更改android中的SeekBar顏色? (以編程方式)
- 25. 如何以編程方式在圓上動態更改顏色
- 26. android如何以編程方式更改進度欄顏色
- 27. 以編程方式更改屏幕顏色平衡
- 28. 以編程方式更改VS2012顏色主題
- 29. 以編程方式在android中更改形狀顏色
- 30. 以編程方式更改導航選項卡的顏色
V = findViewById(R.id.mServerTime);將在onCreate中返回null。 –