這裏有很多關於SO請求的方法阻止子視圖複製其父母的按下或選擇狀態。 然而,我問這裏的其他方式:) - 我在我的應用程序之一,看到一個很奇怪的現象:
Android將父視圖的「按下」狀態傳遞給子視圖
當4.0.4設備上運行的應用程序(API 15)我看到的行爲與明顯的默認值匹配,即:父進程將其狀態轉發給其所有子視圖。
在更高的API級別(Android 4.4)上運行相同的應用程序而沒有任何更改時,此行爲會發生變化:父級不轉發其狀態。
我在xml佈局中爲所有相關的子視圖引入了duplicateParentState
,但這在這裏似乎沒有幫助。
這是一個已知的「問題」或從API 15到API >> 15的行爲計劃中的變化嗎?
如何確保各州在所有API級別上正確轉發?
如果是任何幫助/相關這裏:我想複製其父母狀態是自定義ImageView
它增加了tintColors子視圖 - 由於該行爲是正確的4.0.4不應該有在這一類中的任何錯誤?
public class INCImageView extends ImageView {
private int _tintColor;
private int _highlightedTintColor;
private int _selectedTintColor;
public INCImageView(Context context, AttributeSet attrs) {
super(context, attrs);
this.setFocusable(true);
this.setClickable(true);
TypedArray array = context.obtainStyledAttributes(attrs, R.styleable.INCImageView);
_tintColor = array.getInt(R.styleable.INCImageView_tintColor, getResources().getColor(R.color.inc_tint));
this.setColorFilter(_tintColor);
_selectedTintColor = array.getInt(R.styleable.INCImageView_selectedTintColor, _tintColor);
_highlightedTintColor = array.getInt(R.styleable.INCImageView_highlightedTintColor, _tintColor);
array.recycle();
}
@Override
public void setSelected(boolean selected) {
super.setSelected(selected);
this.setColorFilter((selected ? _selectedTintColor : _tintColor));
}
@Override
public void setPressed(boolean pressed) {
super.setPressed(pressed);
this.setColorFilter((pressed ? _highlightedTintColor : (this.isSelected() ? _selectedTintColor : _tintColor)));
}
}
應該工作,你可以扭轉'super.set ...'和'setColorFilter'方法的順序嗎? – petey 2014-12-01 21:54:27
是的,我可以扭轉它。 - 測試和仍然是相同的問題:( – Cabus 2014-12-01 22:02:01
:(確實,你可以確認,INCImageView父母也是可以聚焦和點擊? – petey 2014-12-01 22:07:47