2010-10-15 20 views
5

Ich arbeite an Layout in android XML, in dem ich eine Höhe der Schaltflächen festlegen möchte, um es Breite anzupassen, wenn Setup um Eltern zu füllen. Offensichtlich wird sich diese Zahl je nach Bildschirmgröße ändern, so dass ich keine festgelegte Pixelgröße verwenden kann. Kann mir jemand helfen, die Tastenbreite basierend auf der Bildschirmgröße zu bekommen und diese dann an die Höhe zu übergeben?Android: Einstellen der Höhe der Schaltfläche in XML auf der Grundlage der Breite

Danke, Josh

Antwort

-1

Statt Pixelgröße von PX, erwähnen dip (d.h. vorrichtungsunabhängigen Pixel) der Verwendung, dip entsprechend der Geräte Siebgröße unabhängig die Größe in Pixel nehmen.

zum Beispiel: android: textsize = "12dip"

können Sie entweder dip oder dp.

Viel Spaß !!

3

Ich hatte einmal ein ähnliches Problem und fand keine Lösung, die nur aus XML funktioniert. Sie müssen Ihre eigene Button-Klasse schreiben und die Methode [onMeassure] [1] überschreiben.

Beispiel:

/** 
* @see android.view.View#measure(int, int) 
*/ 
@Override 
protected void onMeasure(int widthMeasureSpec, int heightMeasureSpec) { 
    setMeasuredDimension(measureWidth(widthMeasureSpec), measureHeight(heightMeasureSpec)); 
} 

private int width; // saves the meassured width 


/** 
* Determines the width of this view 
* 
* @param measureSpec 
*   A measureSpec packed into an int 
* @return The width of the view, honoring constraints from measureSpec 
*/ 
private int measureWidth(int measureSpec) { 
    int result = 30; 
    int specMode = MeasureSpec.getMode(measureSpec); 
    int specSize = MeasureSpec.getSize(measureSpec); 

    if (specMode == MeasureSpec.EXACTLY) { 
     // We were told how big to be 
     result = specSize; 
    } else { 
     result =1123; // meassure your with here somehow 
     if (specMode == MeasureSpec.AT_MOST) { 
      // Respect AT_MOST value if that was what is called for by measureSpec 
      result = Math.min(result, specSize); 
     } 
    } 
      width = result; 
    return result; 
} 

/** 
* Determines the height of this view 
* 
* @param measureSpec 
*   A measureSpec packed into an int 
* @return The height of the view, honoring constraints from measureSpec 
*/ 
private int measureHeight(int measureSpec) { 
    int result = 0; 
    int specMode = MeasureSpec.getMode(measureSpec); 
    int specSize = MeasureSpec.getSize(measureSpec); 

    if (specMode == MeasureSpec.EXACTLY) { 
     // We were told how big to be 
     result = specSize; 
    } else { 
     result = width; 
     if (specMode == MeasureSpec.AT_MOST) { 
      // Respect AT_MOST value if that was what is called for by measureSpec 
      result = Math.min(result, specSize); 
     } 
    } 

    return result; 
} 

[1]: http://developer.android.com/reference/android/view/View.html#onMeasure(int, int)

Verwandte Themen