2013-05-14 33 views
2

嗨,我有一個應用程序,是一個圖像的畫廊。android界面錯誤ImageButton

問題是,我有按鈕在應用程序中心的圖像之間移動,我希望他們在頂部邊緣的75%處。

問題是:我可以把它放在屏幕%,而不是DP?

錯誤是,如果我使用margin_bottom它崩潰。

這裏是我的代碼

<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" 
xmlns:tools="http://schemas.android.com/tools" 
android:layout_width="wrap_content" 
android:layout_height="wrap_content" 
android:background="@color/color_fondo" 
android:paddingBottom="@dimen/activity_vertical_margin" 
android:paddingLeft="@dimen/activity_horizontal_margin" 
android:paddingRight="@dimen/activity_horizontal_margin" 
android:paddingTop="@dimen/activity_vertical_margin" 
tools:context=".MainActivity" > 

<ImageView 
    android:id="@+id/barra" 
    android:layout_width="wrap_content" 
    android:layout_height="wrap_content" 
    android:layout_alignParentLeft="true" 
    android:layout_alignParentRight="true" 
    android:layout_alignParentTop="true" 
    android:scaleType="fitXY"a 
    android:src="@drawable/cabecera" /> 

<ImageView 
    android:id="@+id/img1" 
    android:layout_width="wrap_content" 
    android:layout_height="match_parent" 
    android:layout_alignParentBottom="true" 
    android:layout_alignParentLeft="true" 
    android:layout_alignParentRight="true" 
    android:layout_below="@+id/barra" 
    android:paddingTop="@dimen/activity_vertical_margin" 
    android:scaleType="fitXY" 
    android:src="@drawable/ic_launcher" /> 

<ProgressBar 
    android:id="@+id/pb1" 
    style="?android:attr/progressBarStyleLarge" 
    android:layout_width="wrap_content" 
    android:layout_height="wrap_content" 
    android:layout_alignTop="@+id/img1" 
    android:layout_centerHorizontal="true" 
    android:visibility="invisible" /> 

<ImageButton 
    android:id="@+id/imgbtnshare1" 
    android:layout_width="wrap_content" 
    android:layout_height="wrap_content" 
    android:layout_alignParentBottom="true" 
    android:layout_centerHorizontal="true" 
    android:background="@null" 
    android:paddingBottom="5dp" 
    android:src="@drawable/compartir4" /> 

<ImageButton 
    android:id="@+id/imgbtn2" 
    android:layout_width="wrap_content" 
    android:layout_height="wrap_content" 
    android:layout_above="@+id/imgbtnshare1" 
    android:layout_alignParentLeft="true" 
    android:layout_marginBottom="100dp" 
    android:background="@null" 
    android:src="@drawable/izquierda42" /> 

<ImageButton 
    android:id="@+id/imgbtn1" 
    android:layout_width="wrap_content" 
    android:layout_height="wrap_content" 
    android:layout_alignParentRight="true" 
    android:layout_alignTop="@+id/imgbtn2" 
    android:background="@null" 
    android:src="@drawable/derecha42" /> 

</RelativeLayout> 

回答

2

您可能會收到Layout大小,然後計算出您的按鈕上邊距爲這一比例:

注意:在onCreate()你不能得到的佈局尺寸,因爲它尚未設置。在ActivityonWindowFocusChanged方法中執行。

RelativeLayout relativeLayout = (RelativeLayout)findViewById(R.id.YourXML); 

@Override 
public void onWindowFocusChanged (boolean hasFocus) { 
     // The layout has been drawn here 
     // so the Height and Width have been computed 
     int width = relativeLayout.getWidth(); 
     int height = relativeLayout.getHeight(); 
} 

int topMargin = height * 0.75; 

,並以編程設置:

LayoutParams layoutParams = new LayoutParams(
            LayoutParams.WRAP_CONTENT,  
            LayoutParams.WRAP_CONTENT 
          ); 

layoutParams.setMargins(left, top, right, bottom); 
yourbutton.setLayoutParams(layoutParams);