配置更改好吧,我通過創建自己的佈局類並通過在onDraw函數中獲取大小來解決它。有點矯枉過正,但它是我找到的唯一解決方案。
感謝@Sharad Mhaske和@Class Stacker爲您的時間!
編輯:我意識到,我沒有提到,我通過設置他們的X和Y位置,以及他們的寬度和高度手動將我的意見放在他們的容器內。這就是爲什麼他們沒有自動調整大小,而容器呢。
編輯:這是我現在使用的代碼片:
public class TilesContainer extends FrameLayout {
// ------------------------------------------------------------------------------------------
// Public interface for on size change event :
public static interface OnSizeChangedListener { void onSizeChanged(int width, int height); }
// ------------------------------------------------------------------------------------------
// ------------------------------------------------------------------------------------------
// Private attributes :
private int _width = -1;
private int _height = -1;
private OnSizeChangedListener _listener = null;
// ------------------------------------------------------------------------------------------
// ------------------------------------------------------------------------------------------
// Constructors :
public TilesContainer(Context context, AttributeSet attrs, int defStyle) {
super(context, attrs, defStyle);
this.setWillNotDraw(false);
}
public TilesContainer(Context context, AttributeSet attrs) {
super(context, attrs);
this.setWillNotDraw(false);
}
public TilesContainer(Context context) {
super(context);
this.setWillNotDraw(false);
}
// ------------------------------------------------------------------------------------------
// ------------------------------------------------------------------------------------------
// Setters :
public void setOnSizeChangedListener(OnSizeChangedListener listener) { _listener = listener; }
// ------------------------------------------------------------------------------------------
// ------------------------------------------------------------------------------------------
// onDraw overload :
@Override
protected void onDraw(Canvas canvas) {
// Call super :
super.onDraw(canvas);
// If there is a listener and if the size changed :
if(_listener != null && (_width != this.getWidth() || _height != this.getHeight())) {
_width = this.getWidth();
_height = this.getHeight();
_listener.onSizeChanged(this.getWidth(), this.getHeight());
}
}
// ------------------------------------------------------------------------------------------
}
現在在活動中,中庸之道實施OnSizeChangedListener,使用setter和新增功能:
@Override
public void onSizeChanged(int width, int height) {
// Do your stuff with the GOOD size !
}
我很遺憾沒有你的問題的答案,但是甚至不考慮手動調用系統生命週期回調。在'onResume()'中調用'onCreate()'是一個非常糟糕的主意。此外,在理想的世界中,您只需通過「NonConfigurationInstance」調用將玩家對象從被銷燬的活動傳遞給新出生的對象。但是,我似乎記得,對於視頻來說可能會有困難。 – 2013-04-23 11:28:05
感謝您的回答。我已經嘗試通過NonConfigurationInstance傳遞媒體播放器,但是...我們並不處於理想的世界,並且MediaPlayer似乎不可能:/ – 2013-04-23 13:43:10
是的,這就是我所記得的。不過,它幾乎可以與其他所有產品配合使用。 ;)無論如何,我不確定你的實際問題是什麼。什麼不適合你? - 關於很多事情,通常認爲應該在'onCreate()'中完成它們,當它們應該在'onResume()'中完成時。 ;) – 2013-04-23 13:51:45