2013-05-14 5 views
2

안녕하세요, 저는 이미지 갤러리 인 앱을 가지고 있습니다.android interface error ImageButton

문제는 앱의 중앙에있는 이미지 사이를 이동하는 버튼이 있으며 맨 위 여백의 75 %에서 원하는 버튼입니다.

질문 : dp 대신 화면의 %에 넣을 수 있습니까?

내가 사용하는 경우 margin_bottom 오류가 발생합니다.

참고 : 여기

당신은 Layout 크기를 얻을 수와 그 비율로 버튼을 상단 여백을 계산할 수 내 코드

<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

당신이 때문에 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);