我创建了一个简单的布局,总共有4个按钮:布局底部的3个按钮(在RelativeLayout中)和几乎在屏幕中间的巨大按钮上。
在冰淇淋三明治和Jellybean上,我可以点击任何按钮,一切正常(即相应的onClick功能被调用)但奇怪的是姜饼底部工作的3个按钮中的任何一个但不是中间。 onClick会触发许多指令,所有指令都没有被执行,据我所知,它没有被调用,我不知道为什么。
布局代码如下。非常感谢任何帮助!
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:id="@+id/main_layout"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:background="@drawable/main_off"
android:orientation="vertical"
android:weightSum="10" >
<ImageButton
android:id="@+id/button_activate"
android:layout_width="155dp"
android:layout_height="0dp"
android:layout_gravity="center_horizontal"
android:layout_marginTop="170dp"
android:layout_weight="7.2"
android:background="@drawable/transparent"
android:clickable="true"
android:contentDescription="@string/app_name"
android:onClick="activate"
android:src="@drawable/transparent" />
<RelativeLayout
android:layout_width="fill_parent"
android:layout_height="30dp"
android:layout_marginTop="80dp"
android:layout_weight="2" >
<ImageButton
android:id="@+id/button_help"
android:layout_width="90dp"
android:layout_height="fill_parent"
android:layout_centerHorizontal="true"
android:layout_marginTop="0dp"
android:background="@drawable/transparent"
android:clickable="true"
android:contentDescription="@string/app_name"
android:onClick="openhelp"
android:src="@drawable/transparent" />
<ImageButton
android:id="@+id/button_settings"
android:layout_width="55dp"
android:layout_height="fill_parent"
android:layout_alignParentLeft="true"
android:layout_marginTop="0dp"
android:layout_toLeftOf="@+id/button_help"
android:background="@drawable/transparent"
android:clickable="true"
android:contentDescription="@string/app_name"
android:onClick="opensettings"
android:src="@drawable/transparent" />
<ImageButton
android:id="@+id/button_contact"
android:layout_width="70dp"
android:layout_height="fill_parent"
android:layout_alignParentRight="true"
android:layout_marginTop="0dp"
android:layout_toRightOf="@+id/button_help"
android:background="@drawable/transparent"
android:clickable="true"
android:contentDescription="@string/app_name"
android:onClick="opencontact"
android:src="@drawable/transparent" />
</RelativeLayout>
</LinearLayout>
调用布局的活动(main.xml):
//bunch of imports
public class MainActivity extends Activity {
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
LinearLayout layout = (LinearLayout) findViewById (R.id.main_layout);
boolean serviceOn = isMyServiceRunning();
if(serviceOn==true) layout.setBackgroundResource(R.drawable.main_on);
else if (serviceOn==false) layout.setBackgroundResource(R.drawable.main_off);
}
@Override
protected void onResume() {
super.onResume();
LinearLayout layout = (LinearLayout) findViewById (R.id.main_layout);
boolean serviceIsOn = isMyServiceRunning();
if(serviceIsOn==true) layout.setBackgroundResource(R.drawable.main_on);
else if (serviceIsOn==false) layout.setBackgroundResource(R.drawable.main_off);
}
public void activate(View v){
LinearLayout layout = (LinearLayout) findViewById (R.id.main_layout);
Resources res = getResources();
Drawable on = res.getDrawable(R.drawable.main_on);
Drawable off = res.getDrawable(R.drawable.main_off);
if (layout.getBackground().getConstantState() == off.getConstantState()){
layout.setBackgroundResource(R.drawable.main_on);
Toast.makeText(getApplicationContext(), "App has been activated", Toast.LENGTH_SHORT).show();
turnon();
}
else if (layout.getBackground().getConstantState() == on.getConstantState()){
layout.setBackgroundResource(R.drawable.main_off);
Toast.makeText(getApplicationContext(), "App has been deactivated", Toast.LENGTH_SHORT).show();
turnoff();
}
}
}
答案 0 :(得分:1)
我可以在我的模拟器上为2.2和2.3运行。
我唯一可以建议的是尝试删除drawables(可能是某些设置搞砸了),或者尝试使你的相对布局高度为0dp,因为你使用的是weight_sum