使ImageButtons重新缩放以适合屏幕边缘

时间:2015-01-29 12:59:54

标签: java android

我的ImageButton可以很好地扩展,但出于布局目的,我希望它能够触及屏幕的两侧,我该怎么做?

ImageButton重新调整代码:

public void getScreenRes() {
    DisplayMetrics display = this.getResources().getDisplayMetrics();
    int screenwidth = display.widthPixels;
    int screenheight = display.heightPixels;
    double buttonheight = screenwidth / 2.66666667;
    int buttonheightint= (int) Math.round(buttonheight);
    ImageButton fbLogin = (ImageButton) findViewById(R.id.facebookLogin);
    ViewGroup.LayoutParams fb = fbLogin.getLayoutParams();
    fb.width = screenwidth;
    fb.height = buttonheightint;
    fbLogin.setLayoutParams(fb);
    ImageButton instaLogin = (ImageButton) findViewById(R.id.instagramLogin);
    ViewGroup.LayoutParams insta = instaLogin.getLayoutParams();
    insta.width = screenwidth;
    insta.height = buttonheightint;
    instaLogin.setLayoutParams(insta);
}

XML:

   <ImageButton
       android:layout_width="wrap_content"
       android:layout_height="wrap_content"
       android:layout_marginTop="100dp"
       android:background="@drawable/facebook"
       android:layout_centerHorizontal="true"
       android:id="@+id/facebookLogin"
       android:scaleType="fitCenter"
       android:onClick="facebookLogin"
       />
   <ImageButton
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:background="@drawable/instagram"
        android:layout_centerHorizontal="true"
        android:layout_below="@id/facebookLogin"
        android:id="@+id/instagramLogin"
        android:scaleType="fitCenter"
        android:onClick="instagramLogin"
        />

这就是我想要的,红线是我想用图像按钮填充的未占用空间:

3 个答案:

答案 0 :(得分:2)

正如Fede Bucich上面提到的

机器人:layout_width =&#34; match_parent&#34; 机器人:layout_height =&#34; WRAP_CONTENT&#34;

将使按钮与其父视图的宽度匹配,但对于图像,您已将scaleType指定为&#34; fitCenter&#34;它将保持源图像的原始宽高比并使其居中,而不是使用&#34; fitXY&#34;伸展到x轴和y轴。

答案 1 :(得分:1)

您是否尝试过以下内容?

   android:layout_width="match_parent"
   android:layout_height="wrap_content"

From the docs

FILL_PARENT (renamed MATCH_PARENT in API Level 8 and higher), which means that the view wants to be as big as its parent (minus padding)

答案 2 :(得分:0)

将ImageButton宽度更改为“match_parent”,将scaleType更改为“fitXY”,如下所示:

   <ImageButton
       android:layout_width="match_parent"
       android:layout_height="wrap_content"
       android:layout_marginTop="100dp"
       android:background="@drawable/facebook"
       android:layout_centerHorizontal="true"
       android:id="@+id/facebookLogin"
       android:scaleType="fitXY"
       android:onClick="facebookLogin"/>

但仅当包含layout的{​​{1}} ImageButtons等于layout_width

时才会有效