2013-05-14 2 views
2

Привет, у меня есть приложение, которое представляет собой галерею изображений.ошибка интерфейса андроида 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() так он еще не установлен. Сделайте это в onWindowFocusChanged метод вашего Activity.

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);