wrap_content funktioniert bei custom views nicht

  • 0 Antworten
  • Letztes Antwortdatum
R

RobNeck

Ambitioniertes Mitglied
3
Moinsen!

Ich habe mir ein paar eigene View gebaut, die ich gerne in einem RelativeLayout platzieren würde. Nun habe ich festgestellt, dass ich die Größe der custom views nicht mit "wrap_content" automatisch setzen kann. Stattdessen muss ich hartcodierte Werte nutzen. Das ist bei Smartphones weniger ein Problem, aber wenn ich mir das Layout dann auf einem Tablet anschaue, ist der halbe view abgeschnitten.

Habe ich bei meinem view vergessen, eine Methode zu überschreiben, oder gibt es da sonst einen Trick, wie ich wrap_content für die Skalierung der View nutzen kann?

Meine onMeasure Methode sieht wie folgt aus:
Code:
	@Override
	protected void onMeasure(final int widthMeasureSpec, final int heightMeasureSpec) {

	    final int desiredWidth = 100;
	    final int desiredHeight = 100;

	    final int widthMode = MeasureSpec.getMode(widthMeasureSpec);
	    final int widthSize = MeasureSpec.getSize(widthMeasureSpec);
	    final int heightMode = MeasureSpec.getMode(heightMeasureSpec);
	    final int heightSize = MeasureSpec.getSize(heightMeasureSpec);

	    int width;
	    int height;

	    //Measure Width
	    if (widthMode == MeasureSpec.EXACTLY) {
	        //Must be this size
	        width = widthSize;
	    } else if (widthMode == MeasureSpec.AT_MOST) {
	        //Can't be bigger than...
	        width = Math.min(desiredWidth, widthSize);
	    } else {
	        //Be whatever you want
	        width = desiredWidth;
	    }

	    //Measure Height
	    if (heightMode == MeasureSpec.EXACTLY) {
	        //Must be this size
	        height = heightSize;
	    } else if (heightMode == MeasureSpec.AT_MOST) {
	        //Can't be bigger than...
	        height = Math.min(desiredHeight, heightSize);
	    } else {
	        //Be whatever you want
	        height = desiredHeight;
	    }

	    //MUST CALL THIS
	    setMeasuredDimension(width, height);
	}
 
Zuletzt bearbeitet:

Ähnliche Themen

AnnaBauer21
Antworten
0
Aufrufe
488
AnnaBauer21
AnnaBauer21
AnnaBauer21
Antworten
6
Aufrufe
989
AnnaBauer21
AnnaBauer21
Zurück
Oben Unten