简体   繁体   中英

How to make imageButtons fixed in XML and not move around?

I have this layout, like on the image below, with 36 images. I set src to those imageButtons and that works fine. Now I set imageButton.setVisibility(View.GONE); and that also works fine. But when I "vanish" one of the buttons with click, all the others move for one place and that's bad. How to make all the other stay put?

在此输入图像描述

My XML:

<?xml version="1.0" encoding="utf-8"?>
<FrameLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:orientation="vertical"
    android:background="@drawable/background" >

    <LinearLayout
        android:layout_width="match_parent"
        android:layout_height="365dp" >

        <ImageView
            android:id="@+id/ivSlika"
            android:layout_width="fill_parent"
            android:layout_height="match_parent" />

    </LinearLayout>

    <LinearLayout
        android:layout_width="fill_parent"
        android:layout_height="365dp"
        android:orientation="vertical" >

        <LinearLayout
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:orientation="horizontal" >

        <ImageButton
            android:id="@+id/ib1"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:src="@drawable/bricks_01"
            android:padding="0dp" />

        <ImageButton
            android:id="@+id/ib2"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:src="@drawable/bricks_02"
            android:padding="0dp" />

        <ImageButton
            android:id="@+id/ib3"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:src="@drawable/bricks_03"
            android:padding="0dp" />

        <ImageButton
            android:id="@+id/ib4"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:src="@drawable/bricks_04"
            android:padding="0dp" />

        <ImageButton
            android:id="@+id/ib5"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:src="@drawable/bricks_05"
            android:padding="0dp" />

        <ImageButton
            android:id="@+id/ib6"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:src="@drawable/bricks_06"
            android:padding="0dp" />
    </LinearLayout>

    <LinearLayout
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:orientation="horizontal" >

        <ImageButton
            android:id="@+id/ib7"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:src="@drawable/bricks_07"
            android:padding="0dp" />

        <ImageButton
            android:id="@+id/ib8"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:src="@drawable/bricks_08"
            android:padding="0dp" />

        <ImageButton
            android:id="@+id/ib9"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:src="@drawable/bricks_09"
            android:padding="0dp" />

        <ImageButton
            android:id="@+id/ib10"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:src="@drawable/bricks_10"
            android:padding="0dp" />

        <ImageButton
            android:id="@+id/ib11"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:src="@drawable/bricks_11"
            android:padding="0dp" />

        <ImageButton
            android:id="@+id/ib12"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:src="@drawable/bricks_12"
            android:padding="0dp" />
    </LinearLayout>

    <LinearLayout
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:orientation="horizontal" >

        <ImageButton
            android:id="@+id/ib13"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:src="@drawable/bricks_13"
            android:padding="0dp" />

        <ImageButton
            android:id="@+id/ib14"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:src="@drawable/bricks_14"
            android:padding="0dp" />

        <ImageButton
            android:id="@+id/ib15"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:src="@drawable/bricks_15"
            android:padding="0dp" />

        <ImageButton
            android:id="@+id/ib16"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:src="@drawable/bricks_16"
            android:padding="0dp" />

        <ImageButton
            android:id="@+id/ib17"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:src="@drawable/bricks_17"
            android:padding="0dp" />

        <ImageButton
            android:id="@+id/ib18"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:src="@drawable/bricks_18"
            android:padding="0dp" />
    </LinearLayout>

    <LinearLayout
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:orientation="horizontal" >

        <ImageButton
            android:id="@+id/ib19"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:src="@drawable/bricks_19"
            android:padding="0dp" />

        <ImageButton
            android:id="@+id/ib20"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:src="@drawable/bricks_20"
            android:padding="0dp" />

        <ImageButton
            android:id="@+id/ib21"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:src="@drawable/bricks_21"
            android:padding="0dp" />

        <ImageButton
            android:id="@+id/ib22"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:src="@drawable/bricks_22"
            android:padding="0dp" />

        <ImageButton
            android:id="@+id/ib23"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:src="@drawable/bricks_23"
            android:padding="0dp" />

        <ImageButton
            android:id="@+id/ib24"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:src="@drawable/bricks_24"
            android:padding="0dp" />
    </LinearLayout>

    <LinearLayout
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:orientation="horizontal" >

        <ImageButton
            android:id="@+id/ib25"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:src="@drawable/bricks_25"
            android:padding="0dp" />

        <ImageButton
            android:id="@+id/ib26"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:src="@drawable/bricks_26"
            android:padding="0dp" />

        <ImageButton
            android:id="@+id/ib27"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:src="@drawable/bricks_27"
            android:padding="0dp" />

        <ImageButton
            android:id="@+id/ib28"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:src="@drawable/bricks_28"
            android:padding="0dp" />

        <ImageButton
            android:id="@+id/ib29"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:src="@drawable/bricks_29"
            android:padding="0dp" />

        <ImageButton
            android:id="@+id/ib30"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:src="@drawable/bricks_30"
            android:padding="0dp" />
    </LinearLayout>

    <LinearLayout
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:orientation="horizontal" >

        <ImageButton
            android:id="@+id/ib31"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:src="@drawable/bricks_31"
            android:padding="0dp" />

        <ImageButton
            android:id="@+id/ib32"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:src="@drawable/bricks_32"
            android:padding="0dp" />

        <ImageButton
            android:id="@+id/ib33"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:src="@drawable/bricks_33"
            android:padding="0dp" />

        <ImageButton
            android:id="@+id/ib34"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:src="@drawable/bricks_34"
            android:padding="0dp" />

        <ImageButton
            android:id="@+id/ib35"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:src="@drawable/bricks_35"
            android:padding="0dp" />

        <ImageButton
            android:id="@+id/ib36"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:src="@drawable/bricks_36"
            android:padding="0dp" />
    </LinearLayout>

    </LinearLayout>

    <LinearLayout
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:orientation="horizontal" >

        <Button
            android:id="@+id/bIzlazCigle"
            android:layout_width="60dp"
            android:layout_height="40dp"
            android:layout_marginLeft="10dp"
            android:layout_marginTop="390dp"
            android:background="@drawable/buttons_final"
            android:padding="0dp"
            android:text="Izlaz"
            android:textColor="#ffffff"
            android:textSize="19sp" />

        <Button
            android:id="@+id/bKonacnoCigle"
            android:layout_width="180dp"
            android:layout_height="40dp"
            android:layout_marginLeft="15dp"
            android:layout_marginTop="390dp"
            android:background="@drawable/buttons_final"
            android:padding="0dp"
            android:text="Konačno rešenje!"
            android:textColor="#ffffff"
            android:textSize="19sp" />

    </LinearLayout>

</FrameLayout>

I set them invisible like this:

public void onClick(View v) {
        switch(v.getId()){

        case R.id.ib1:
            b1.setVisibility(View.GONE);
            break;
        case R.id.ib2:
            b2.setVisibility(View.GONE);
            break;
        case R.id.ib3:
            b3.setVisibility(View.GONE);
            break;
        case R.id.ib4:
            b4.setVisibility(View.GONE);
            break;
        case R.id.ib5:
            b5.setVisibility(View.GONE);
            break;
        case R.id.ib6:
            b6.setVisibility(View.GONE);
.
.
.
.
.
}

您可以使用View.INVISIBLE而不是View.GONE

For this you can use View.INVISIBLE instead of View.GONE . Actually When you use View.GONE it will not take any space on layout. But when you use View.INVISIBLE , it will just not visible on screen but it actually still remain on layout. You are using Padding 0(zero) . so when one image is gone on click other will move forward , due to zero padding.

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM