Проблемы с видимостью кнопок в Android - PullRequest
1 голос
/ 07 февраля 2012

Я создаю панель инструментов, которая переключает видимость кнопок при нажатии кнопки на панели инструментов.Таким образом, если пользователь нажимает кнопку «Рисовать», над кнопкой «Рисование» становятся видны невидимые кнопки «Карандаш» и «Перо». Если снова нажать кнопку «Рисовать», кнопки «Карандаш» и «Перо»снова станет невидимым.

В моем XML-файле я установил видимость некоторых кнопок как «невидимых», поэтому при запуске действия они не будут видны. Эта часть прямолинейна.

.xml файл btnDrawLine - (Обновление @ 12:21)

<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="wrap_content"
    android:layout_height="fill_parent" >

<com.odhranlynch.testSection.UserInterface
    android:id="@+id/UserInterface"
    android:layout_width="fill_parent"
    android:layout_height="fill_parent"
    android:layout_alignParentTop="true" />

<Button
    android:id="@+id/btnDraw"
    android:layout_width="80dip"
    android:layout_height="wrap_content"
    android:layout_alignParentBottom="true"
    android:layout_alignParentLeft="true"
    android:text="Draw" />

<Button
    android:id="@+id/btnDrawLine"
    android:layout_width="80dip"
    android:layout_height="wrap_content"
    android:layout_above="@+id/btnDraw"
    android:layout_alignParentLeft="true"
    android:visibility="visible"
    android:text="Line" />

<Button
    android:id="@+id/btnDrawCurve"
    android:layout_width="80dip"
    android:layout_height="wrap_content"
    android:layout_above="@+id/btnDrawLine"
    android:layout_alignParentLeft="true"
    android:visibility="visible"
    android:text="Curve" />

<Button
    android:id="@+id/btnCutout"
    android:layout_width="80dip"
    android:layout_height="wrap_content"
    android:layout_alignParentBottom="true"
    android:layout_toRightOf="@+id/btnDraw"
    android:text="Cutout" />

<Button
    android:id="@+id/btnCutInner"
    android:layout_width="80dip"
    android:layout_height="wrap_content"
    android:layout_above="@+id/btnDraw"
    android:layout_toRightOf="@+id/btnDraw"
    android:visibility="visible"
    android:text="Inner" />

<Button
    android:id="@+id/btnCutOutter"
    android:layout_width="80dip"
    android:layout_height="wrap_content"
    android:layout_alignBaseline="@+id/btnDrawCurve"
    android:layout_alignBottom="@+id/btnDrawCurve"
    android:layout_toLeftOf="@+id/btnCancel"
    android:visibility="visible"
    android:text="Outter" />

<Button
    android:id="@+id/btnCancel"
    android:layout_width="80dip"
    android:layout_height="wrap_content"
    android:layout_alignParentBottom="true"
    android:layout_toLeftOf="@+id/btnFinish"
    android:text="Cancel" />

<Button
    android:id="@+id/btnFinish"
    android:layout_width="80dip"
    android:layout_height="wrap_content"
    android:layout_alignParentBottom="true"
    android:layout_alignParentRight="true"
    android:text="Finish" />

</RelativeLayout>

Далее, когда пользователь нажимает на видимую кнопку, мне нужны невидимые кнопкичтобы появиться.

Вот в чем дело, они не появятся снова! lol Я смущен этим.

Я был бы очень признателен, если бы кто-то был настолько любезен, чтобы пролить свет на этодля меня:)

testActivity.java

package com.odhranlynch.testSection;

import com.odhranlynch.testSection.R;
import android.app.Activity;
import android.os.Bundle;
import android.util.Log;
import android.view.View;

public class testActivity extends Activity {

@Override
public void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.new_product);

    // Find buttons and give them a name.
    final View btnDraw = findViewById(R.id.btnDraw);
    final View btnCutOut = findViewById(R.id.btnCutout);
    final View btnDrawLine = findViewById(R.id.btnDrawLine);
    final View btnDrawCurve = findViewById(R.id.btnDrawCurve);
    final View btnCutInner = findViewById(R.id.btnCutInner);
    final View btnCutOutter = findViewById(R.id.btnCutOutter);


    //Draw Button clicked (UI Toolbar).
    btnDraw.setOnClickListener(new View.OnClickListener() {
        public void onClick(View view) {
            //Treat button as a toggle button
            //So if a sub-button (e.g. Draw Line) is visible, then we know the button has
            //been toggled to visible so lets now make it invisible.

            if (btnDrawLine.getVisibility()== View.VISIBLE) {
                //Its visible.
                btnDrawLine.setVisibility(View.INVISIBLE);

                btnDrawCurve.setVisibility(View.INVISIBLE);
                Log.d("TAG", "INVISIBLE");
            } else {
                // Either gone or invisible
                btnDrawLine.setVisibility(View.VISIBLE);
                btnDrawCurve.setVisibility(View.VISIBLE);
                Log.d("TAG", "VISIBLE");
            }
        }
    });     

}
}

В качестве еще одного замечания, если я установлю видимость кнопок, которые будут видны в .xmlфайл я могу прекрасно переключать видимость во время выполнения!

Опять ябыл бы признателен за некоторую помощь:)

Ответы [ 3 ]

0 голосов
/ 07 февраля 2012

Попробуйте заменить View.INVISIBLE на View.GONE.

0 голосов
/ 18 октября 2012

Если вы хотите, чтобы использование исчезло / стало видимым, просто добавьте LinearLayout вокруг кнопок, которые вы хотите скрыть. LinearLayout будет иметь layout_width = wrap_content; и вы ссылаетесь на позицию другого элемента в этом макете.

После того, как вы сможете изменить видимость ваших кнопок / исчезнувших.

0 голосов
/ 07 февраля 2012

Ваш код работает нормально ..

Файл XML

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:orientation="vertical" >

<TextView
    android:layout_width="fill_parent"
    android:layout_height="wrap_content"
    android:text="@string/hello" />

<Button
android:id="@+id/btnDrawLine"
android:layout_width="80dip"
android:layout_height="wrap_content"
android:layout_above="@+id/btnDraw"
android:layout_alignParentLeft="true"
android:visibility="invisible"
android:text="Line" />

<Button
    android:id="@+id/draw"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:text="draw" />

</LinearLayout>

Активность

import android.app.Activity;
import android.os.Bundle;
import android.util.Log;
import android.view.View;
import android.widget.Button;

public class DrawCanvasActivity extends Activity {
private static final String Number1 = "9686801147";

/** Called when the activity is first created. */
@Override
public void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.main);
    final View btnDrawLine = findViewById(R.id.btnDrawLine);


    Button btnDraw = (Button) findViewById(R.id.draw);
    btnDraw.setOnClickListener(new View.OnClickListener() {
        public void onClick(View view) {
            if (btnDrawLine.getVisibility()== View.VISIBLE) {
                btnDrawLine.setVisibility(View.INVISIBLE);
                Log.d("TAG", "INVISIBLE");
            } else {
                btnDrawLine.setVisibility(View.VISIBLE);
                Log.d("TAG", "VISIBLE");
            }
        }
    });     
}
}

Строка кнопки появляется при нажатии кнопки рисования.Думаю, что проблема может быть в форматировании представления в вашем коде.

...