Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/223.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
活动重新启动时Android自定义按钮消失_Android_Button_Android Activity_Custom Controls - Fatal编程技术网

活动重新启动时Android自定义按钮消失

活动重新启动时Android自定义按钮消失,android,button,android-activity,custom-controls,Android,Button,Android Activity,Custom Controls,我在活动中有一个自定义按钮。它很好用。我回击,然后重新启动活动,按钮不见了。我创建了一个剥离项目来说明问题所在 应用程序以此活动启动(仅一个启动Activity2的按钮): Activity2只有一个按钮 <Button android:id="@+id/button2" android:layout_width="wrap_content" android:layout_height="wrap_content" android:background="@

我在活动中有一个自定义按钮。它很好用。我回击,然后重新启动活动,按钮不见了。我创建了一个剥离项目来说明问题所在

应用程序以此活动启动(仅一个启动Activity2的按钮):

Activity2只有一个按钮

<Button
    android:id="@+id/button2"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:background="@drawable/menu_left_button" />
现在再试一次

public class TestCustomButtonActivity extends Activity {
    /** Called when the activity is first created. */

   private static Button btn1;
    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.main);

        btn1 = (Button) findViewById(R.id.button1);
        btn1.setOnClickListener(new View.OnClickListener() {

            public void onClick(View view) {
                Intent intent = new Intent(TestCustomButtonActivity.this, Activity2.class);
                startActivity(intent);
                }
        });
    }
}

几个月后,你可以看到,我偶然找到了答案。它作为另一个stackoverflow问题的答案发布:。我现在知道的实际问题是图像“button\u left\u normal”没有显示,因为它是按字母顺序排列的第一个图像。如果按钮有一个固定的大小,而不是“包装内容”作为尺寸,我将能够点击它,并看到“按钮左按”显示没有任何问题。我希望这对其他人有所帮助。

android设置:
constantSize=“false”
对我有帮助

因此,您的代码将如下所示:

<?xml version="1.0" encoding="utf-8"?>
<selector xmlns:android="http://schemas.android.com/apk/res/android"
          android:constantSize="false">
    <item android:state_pressed="true"
          android:drawable="@drawable/button_left_pressed" /> <!-- pressed -->
    <item android:state_focused="true"
          android:drawable="@drawable/button_left_hovered" /> <!-- focused -->
    <item android:drawable="@drawable/button_left_normal" /> <!-- default -->
</selector>


活动2的代码在哪里?发布。同时添加activity2的代码。发布activity2代码并将按钮ID更改为button1和button2。按钮2是在活动2中消失的一个。我尝试了很多东西,但仍然不起作用。将api级别更改为7,没有更改。又添加了一个执行以下操作的按钮:(a)btn2.invalidate(),无任何内容。(b) btn2.setBackgroundResource(R.drawable.menu\u left\u按钮),仍然是空的。尺寸从50x50变为19x0,没有任何理由变为19x0,也没有任何其他随机值。在尝试了所有可能的解决方案后,我提出了这个解决方案,虽然不完全令人满意,但可以完成工作。我使用eclipse向导(topleftbutton.xml)创建了一个新的xml选择器。在其中复制了我以前的选择器(menu_left_button.xml)的内容,没有做任何更改。它现在运行良好。但我还是想知道为什么。试图将menu_left_button.xml复制到一个没有下划线的新文件中,但无效。它必须是由eclipse向导创建的文件。所以这一定是巫师做的,我没有做的。这并不能解决问题,尽管我不得不承认我在这个项目中有2个button1 ID,这至少让人困惑。现在更正它。问题不在这个“button1”,而是在另一个“button1”,现在是button2。也解决了我的问题。在安卓2.2设备上,我没有问题。在Android 4.x Nexus 7上测试时,我遇到了使用constantSize=“true”的选择器问题,导致ImageButton的大小减小到0,0。带有constantSize=“true”选择器的初始设计时后台分配工作正常,但通过SetBackgroundResource()或SetBackgroundDrawable()编程设置会导致ImageButton大小为0,0。
public class Activity2 extends Activity {
    /** Called when the activity is first created. */
    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.act2);
    }
}
public class TestCustomButtonActivity extends Activity {
    /** Called when the activity is first created. */

   private static Button btn1;
    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.main);

        btn1 = (Button) findViewById(R.id.button1);
        btn1.setOnClickListener(new View.OnClickListener() {

            public void onClick(View view) {
                Intent intent = new Intent(TestCustomButtonActivity.this, Activity2.class);
                startActivity(intent);
                }
        });
    }
}
<?xml version="1.0" encoding="utf-8"?>
<selector xmlns:android="http://schemas.android.com/apk/res/android"
          android:constantSize="false">
    <item android:state_pressed="true"
          android:drawable="@drawable/button_left_pressed" /> <!-- pressed -->
    <item android:state_focused="true"
          android:drawable="@drawable/button_left_hovered" /> <!-- focused -->
    <item android:drawable="@drawable/button_left_normal" /> <!-- default -->
</selector>