Android中的按钮可见性问题

时间:2012-02-07 11:56:01

标签: android button visibility visible invisible

我正在创建一个工具栏,当您单击工具栏上的按钮时,该工具栏会切换按钮的可见性。因此,如果用户点击“绘图”按钮,隐藏按钮“铅笔”和“笔”将在“绘图”按钮上方显示。如果再次单击“绘图”按钮,按钮“铅笔”和“笔”将再次变得无形。

在我的xml文件中,我将某些按钮的可见性设置为“不可见”,因此当我启动活动时,它们将不会被看到。这部分是直截了当的。

btnDrawLine的

.xml文件 - (更新@ 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>

接下来,当用户点击可见的按钮时,我希望显示不可见的按钮。

这就是事情,他们不会重新出现!大声笑我很困惑。

如果有人愿意为我这样做,我将非常感激:)

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文件中可见,我可以在运行时完全切换visibilty!

再一次,我会感激一些帮助:)

3 个答案:

答案 0 :(得分:0)

您的代码工作正常..

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

单击绘图按钮时会出现按钮行。请注意代码中的视图格式可能有问题。

答案 1 :(得分:0)

尝试将View.INVISIBLE替换为View.GONE

答案 2 :(得分:0)

如果您想要使用已消失/可见,只需在您要隐藏的按钮周围添加一个LinearLayout。 LinearLayout将有一个layout_width = wrap_content;并且您将其他元素的位置引用到此布局。

您可以随意更改按钮的可见性。