Android 界面错误 ImageButton

标签 android android-layout android-imageview

嗨,我有一个图像库应用程序。

问题是,我有按钮可以在应用程序中心的图像之间移动,并且我希望它们位于顶部边缘的 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>

最佳答案

您可以获取布局尺寸,然后计算按钮上边距的比例:

注意:您无法在 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);

关于Android 界面错误 ImageButton,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16538861/

相关文章:

android - 在 Camera 中配置更改后,返回到带有空 ImageView 的应用程序

java - onRestoreInstanceState() 究竟是如何工作的?

android - 如何生成 android 风格的 javadocs?

android - 一个广告通过不同的布局 - Android

android - 如何在Textview xml中将每个单词的第一个字母更改为大写

java - 使用 url 加载 imaeview 的任何更快的方法

支持所有平板电脑的 Android - 对可绘制对象和布局进行分类

android - Cordova android 滚动/性能问题

android - 如何在android中制作如下所示的控件?

android - 使用 ShapedDrawable 将 ColorFilter 应用于 ImageView