我的ImageButton没有像代码告诉它那样重新缩放。事实上,它没有做任何事情

时间:2015-01-28 14:15:51

标签: java android

我的ImageButton没有像代码告诉它那样重新缩放。事实上,它没有做任何事情。

代码:

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    getSupportActionBar().setDisplayShowCustomEnabled(true);
    setTitle("Valour");
    setContentView(R.layout.activity_main_screen);
    getScreenRes();
}

public void getScreenRes() {
    DisplayMetrics display = this.getResources().getDisplayMetrics();
    int width = display.widthPixels;
    int height = display.heightPixels;
    int buttonheight = display.heightPixels / 8;
    double buttonwidth = buttonheight * 2.66666667;
    int buttonwidthint = (int) Math.round(buttonwidth);
    ImageButton firsttimeFB = (ImageButton) findViewById(R.id.firsttime_fb);
    firsttimeFB.getLayoutParams().width = buttonwidthint;
    firsttimeFB.getLayoutParams().height = buttonheight;
}

XML:

<ImageButton
    android:layout_width="50dip"
    android:layout_height="50dip"
    android:background="@drawable/facebook"
    android:id="@+id/firsttime_fb"
/>

最终看起来像这样:

Incorrectly scaled ImageButton

3 个答案:

答案 0 :(得分:0)

在更改宽度和高度后,从setLayoutParams()调用firsttimeFB

答案 1 :(得分:0)

尝试使用android:src并更改ScaleType,看看是否能让它更好地扩展。 此外,在通过调用getLayoutParams()设置宽度和高度之后,您应该调用请求布局,否则将不会显示更改。

如果要根据高度设置宽度,反之亦然,您应该创建自己的自定义ImageButton类,其中包含以下代码:

public class CustomImageButton extends ImageButton{

...

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

int height = getMeasuredHeight();
float constant = 2.6666;
setMeasuredDimension(height * constant, height);
}

 ...

}

我想补充的是,我想知道你要做什么。我想不出一个我需要屏幕尺寸来阻止按钮大小的场景。尝试重新思考你的方法,并问问自己你所做的事情是否有意义。

答案 2 :(得分:0)

试试这个:

public void getScreenRes(){
    DisplayMetrics display = this.getResources().getDisplayMetrics();
    int width = display.widthPixels;
    int height = display.heightPixels;
    int buttonheight = display.heightPixels / 8;
    double buttonwidth = buttonheight * 2.66666667;
    int buttonwidthint = (int) Math.round(buttonwidth);
    ImageButton firsttimeFB = (ImageButton) findViewById(R.id.firsttime_fb);
    LayoutParams lp = firsttimeFB.getLayoutParams();
    lp.width = buttonwidthint;
    lp.height = buttonheight;
    firsttimeFB.setLayoutParams(lp);

}