Android查看动态大小

时间:2016-01-20 19:30:40

标签: java android

我有一个包含多个视图的布局,其中一个视图必须根据屏幕大小进行缩放。截至目前,我已将其设置为250dp,因为它在5.1英寸设备上看起来不错,但是当在较小的设备上使用时,它就不再那么好了。我不能使用换行内容,因为它会使它看起来很糟糕,按钮的大小太小,所以它必须是屏幕宽度的1/3。是否可以在布局代码中执行此操作,还是必须在java代码中执行此操作?

3 个答案:

答案 0 :(得分:0)

你需要覆盖onMeasure(...)然后在你的视图中调整此函数的大小。 Here是完美的解释和解决方案。 这个链接的一些参考代码如下......

@Override
protected void onMeasure(int widthMeasureSpec, int heightMeasureSpec) {

    int desiredWidth = 100;
    int desiredHeight = 100;

    int widthMode = MeasureSpec.getMode(widthMeasureSpec);
    int widthSize = MeasureSpec.getSize(widthMeasureSpec);
    int heightMode = MeasureSpec.getMode(heightMeasureSpec);
    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);
}

答案 1 :(得分:0)

您可以查看PercentRelativeLayout中的Percent Support Library。这是一个RelativeLayout,您可以在其中指定百分比的视图大小,例如将其宽度设置为33%。

<android.support.percent.PercentRelativeLayout
     xmlns:android="http://schemas.android.com/apk/res/android"
     xmlns:app="http://schemas.android.com/apk/res-auto"
     android:layout_width="match_parent"
     android:layout_height="match_parent">

     <Button
         app:layout_widthPercent="33%"
         app:layout_heightPercent="33%"
         app:layout_marginTopPercent="25%"
         app:layout_marginLeftPercent="25%" />

</android.support.percent.PercentRelativeLayout>

答案 2 :(得分:0)

  

是否可以在布局代码中执行此操作

是的。使用android:layout_weight的{​​{1}}和android:weightSum属性非常简单:

LinearLayout