以编程方式配置按钮不起作用

时间:2014-11-27 13:43:22

标签: android button

我按下按钮:

<Button
            android:id="@+id/dialog_menu_topic"
            style="@style/dialog_menu_topic"/>

带有样式参考:

<style name="dialog_menu_topic">
    <item name="android:layout_width">wrap_content</item>
    <item name="android:layout_height">wrap_content</item>
    <item name="android:layout_alignParentRight">true</item>
    <item name="android:layout_alignParentTop">true</item>
    <item name="android:text">@string/menu_button</item>
    <item name="android:onClick">menuButtonClicked</item>
    <item name="android:visibility">visible</item>

此活动声明为对话框:

<style name="dialog_style" parent="@android:style/Theme.Dialog">
    <item name="android:windowNoTitle">true</item>

如果我只是这样做:

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.myActivity);

        Button menuButton = (Button) findViewById(R.id.dialog_menu_topic);
        menuButton.setVisibility(Button.GONE);
}

什么都没发生。我尝试获取layoutparams,添加一个规则,我设置可见性消失并将params设置为按钮。但按钮一次又一次出现。任何帮助表示赞赏。

应用程序没有崩溃,按钮没有隐藏,因为他应该这样做。注意:Button的样式和ID具有相同的名称,但它们位于不同的位置,因此它们可以具有相同的名称,而不是问题!任何帮助表示赞赏。

更新 Button.setVisibility(int value)需要一个整数。 Button和View.GONE都返回相同的整数..这不是问题,是的,我尝试使用View.GONE,即使它没有必要......:

11-27 14:56:24.538: E/Button id Button.Gone(27826): 8
11-27 14:56:24.538: E/View id View.Gone(27826): 8

View.GONE和Button.GONE的Logcat输出......

更新当我使用此Button的onClick方法setVisibility时,它可以工作!:

public void myOnclickFromMenuButton(View v){
    v.setVisibility(View.GONE);
}

但是,如果我在我的正常onCreate-Method中使用它,如:

View myButtonView = (View) findViewById(R.id.dialog_menu_topic);
myButtonView.setVisibility(View.GONE);

再一次没有发生......这真是一个糟糕的笑话......; //

更新我的menuButton,其中setVisibility已消失,而来自onClick方法的View v具有完全相同的ID:

11-27 18:48:56.867: E/menuButton.getId(12417): 2131361795
11-27 18:49:00.850: E/v getId(12417): 2131361795

从v消失了,但在正常的onCreate中它不会! 请帮忙..

2 个答案:

答案 0 :(得分:0)

尝试

 menuButton.setVisibility(View.GONE);

答案 1 :(得分:0)

我认为你应该尝试menuButton.setVisibility(View.GONE);