// hier meine CustomView als Gerüst. Ich habe keine onMeasure Methode.
Aber vielleicht liegts ja genau an dem ????
// Wenn ich eine Änderung habe und die CustomView updaten möchte habe
ich das so gemacht:
mycustomview.invalidate();
// falls von Portrait nach Landscape gewechselt wird, handle ich den
Wechsel selber mit:
// onConfigurationChanged ( siehe unten )
// In onConfigurationChanged rufe ich
reinit_sizes_after_config_changed auf. ( siehe unten )
// Ungewünschtes Verhalten : Nachdem das alles durch ist, hängt meine
Customview zuweit unten, weil ich die Höhe der galleryview
// kleiner gemacht habe. Die Customview behielt aber den Abstand vom
oberen Rand.
private class myCustomView extends View implements OnGestureListener {
public myCustomView(Context context) {
super(context);
gestureDetector = new GestureDetector(this);
}
@Override
public boolean onScroll(MotionEvent event, MotionEvent e2,
float distanceX, float distanceY) {
return bmotion;
}
@Override
public boolean onDown(MotionEvent event) {
}
public boolean onSingleTapUp(MotionEvent event) {
}
public boolean onFling(MotionEvent e1, MotionEvent e2,
final float velocityX, final float velocityY) {
}
public boolean onTouchEvent(MotionEvent event) {
}
protected void onDraw(Canvas canvas) {
// Zeichnet meine gesamte Customview
....
....
}
}
@Override
public void onConfigurationChanged(Configuration newConfig) {
// ignore orientation/keyboard change
reinit_sizes_after_config_changed();
super.onConfigurationChanged(newConfig);
}
private void reinit_sizes_after_config_changed(){
DisplayMetrics metrics = new DisplayMetrics();
Display dsp=getWindowManager().getDefaultDisplay();
dsp.getMetrics(metrics);
iScreenHeight = metrics.heightPixels;
iScreenWidth = metrics.widthPixels;
iOrientation=dsp.getOrientation();
iGalleryHeight = (int) (iScreenHeight / 10 * 2.1);
iCustomViewHeight = iScreenHeight / 10 * 8;
iTitleHeight = iScreenHeight / 25;
iToolbarHeight = iScreenHeight / 20;
// Ich verstehs nicht ( wie so vieles :-) ) ich fuege hier ein
Framelayout dazu anstatt ein LinearLayout
g.setLayoutParams(new
FrameLayout.LayoutParams(iScreenWidth,iGalleryHeight));
mycustomview.setLayoutParams(new
FrameLayout.LayoutParams(LayoutParams.WRAP_CONTENT, iCustomViewHeight));
//tm.setLayoutParams(new
LinearLayout.LayoutParams(LayoutParams.WRAP_CONTENT,
iCustomViewHeight));
// Hole Bitmaps in den Speicher ( Buttons ) Scrollbuttons
if (sProduct.toLowerCase().contains("archos") &&
sProduct.contains("70") &&
iOrientation==Configuration.ORIENTATION_LANDSCAPE){
// Beim Archos Internet Tablet gibts ein Archos Menu, das die recht
Seite etwas abdeckt
iAbstandvonrechts=50;
}else{
iAbstandvonrechts=25;
}
// tbl ist mein globales LinaerLayout, das die Gallery und meine
CustomView enthält.
tbl.refreshDrawableState();
g.invalidate();
tm.invalidate();
}
Empfohlener redaktioneller Inhalt
Mit Deiner Zustimmung wird hier ein externer Inhalt geladen.
Mit Klick auf den oben stehenden Button erklärst Du Dich damit einverstanden, dass Dir externe Inhalte angezeigt werden dürfen. Dabei können personenbezogene Daten an Drittanbieter übermittelt werden. Mehr Infos dazu findest Du in unserer Datenschutzerklärung.