我在活动中有自定义按钮。它工作正常。我回击,然后重新启动活动,按钮消失了。我创建了一个剥离项目来显示问题所在。
应用程序以此活动开始(只是一个启动Activity2的按钮):
public class TestCustomButtonActivity extends Activity {
/** Called when the activity is first created. */
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
Button 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);
}
});
}
}
Activity2只有一个按钮
<Button
android:id="@+id/button2"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:background="@drawable/menu_left_button" />
menu_left_button是xml选择器:
<?xml version="1.0" encoding="utf-8"?>
<selector xmlns:android="http://schemas.android.com/apk/res/android"
android:constantSize="true">
<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>
这就是它的全部内容。启动应用程序并按下button1,您将看到Activity2和我们的自定义按钮。它工作正常。但是,如果您点击后退按钮(关闭Activity2)并再次点击button1,我们的自定义按钮就不存在了!它已经消失了。有什么好理由吗?
目标api级别为4(如果这与它有关)。
Activity2代码几乎为空:
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);
}
}
答案 0 :(得分:1)
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>
答案 1 :(得分:0)
现在再试一次。
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);
}
});
}
}
答案 2 :(得分:0)
经过几个月你可以看到,我偶然找到了答案。它在另一个stackoverflow问题中作为答案发布:ImageButton does not display a particular drawable。我现在知道的实际问题是图像“button_left_normal”没有显示,因为它是按字母顺序排列的第一个图像。如果按钮具有固定大小而不是“wrap_content”作为尺寸,我可以单击它,并看到“button_left_pressed”显示没有任何问题。我希望这可以帮助那些人。