如何使用XML固定的imageButtons而不是四处移动?

时间:2013-04-07 16:53:25

标签: java android xml

我有这样的布局,如下图所示,有36张图片。我将src设置为那些imageButtons,并且工作正常。现在我设置imageButton.setVisibility(View.GONE);这也很好。但是当我通过点击“消失”其中一个按钮时,其他所有按钮都会移动到一个地方,这很糟糕。如何让所有其他人留下来?

enter image description here

我的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>

我将它们设置为隐形:

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

2 个答案:

答案 0 :(得分:1)

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

答案 1 :(得分:1)

为此,您可以使用 View.INVISIBLE 代替 View.GONE 。实际上当你使用View.GONE时,它不会在布局上占用任何空间。但是当你使用 View.INVISIBLE 时,它只会在屏幕上看不到,但它实际上仍然保留在布局上。您正在使用填充 0(零)。因此当一个图像消失时,由于零填充,单击其他图像将向前移动。