我在spinner的on触发事件和android中的复选框有问题。所以基本上我要做的是首先选择spinner的东西时,我的 tableOri 会出现。选中该复选框后,将隐藏tableOri并替换为 tableSuggested 。这两个表应首先隐藏。
这是我的route_planning.xml:
<Spinner
android:id="@+id/spinner"
android:layout_width="fill_parent"
android:layout_height="wrap_content" />
<CheckBox
android:id="@+id/cbMostCommuter"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:textStyle="bold"
android:textSize="8sp"
android:text="Most Commuter Routes" />
<TableLayout
android:id = "@+id/tableOri"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_weight="0"
android:padding="5dp">
<TableRow android:layout_height="wrap_content">
<TextView
android:text="10009"
android:paddingRight="10dp"
android:layout_height="wrap_content"
/>
<TextView
android:text="Bt Merah Int"
android:layout_height="wrap_content"
/>
<TextView
android:text="0 mins"
android:paddingLeft="10dp"
android:layout_height="wrap_content"
/>
</TableRow>
</TableLayout>
<TableLayout
android:id = "@+id/tableSuggested"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_weight="0"
android:padding="5dp">
<TableRow android:layout_height="wrap_content">
<TextView
android:text="10009"
android:paddingRight="10dp"
android:layout_height="wrap_content"
/>
<TextView
android:text="Bt Merah Int "
android:layout_height="wrap_content"
/>
<TextView
android:text="0 mins"
android:paddingLeft="10dp"
android:layout_height="wrap_content"
/>
</TableRow>
我执行所有onCLick事件的地方:
private CheckBox cbMostCommuter;
private Spinner spinner;
private static final String[]paths = {"Trunk Bus Service", "268", "269", "272", "275"};
ArrayAdapter<CharSequence> adapter;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.route_planning);
adapter = new ArrayAdapter<CharSequence>(this,
android.R.layout.simple_spinner_item, paths);
adapter.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item);
Spinner spinner = (Spinner) findViewById(R.id.spinner);
spinner.setAdapter(adapter);
spinner.setOnItemSelectedListener(new OnItemSelectedListener(){
@Override
public void onItemSelected(AdapterView<?> parent, View v, int position, long id) {
TableLayout tableOri = (TableLayout)findViewById(R.id.tableOri);
tableOri.setVisibility(View.VISIBLE);
cbMostCommuter = (CheckBox) findViewById(R.id.cbMostCommuter);
cbMostCommuter.setOnClickListener(new OnClickListener(){
public void onClick(View v){
TableLayout tableOri = (TableLayout)findViewById(R.id.tableOri);
TableLayout tableSuggested = (TableLayout)findViewById(R.id.tableSuggested);
if(cbMostCommuter.isChecked() == true){
tableSuggested.setVisibility(View.VISIBLE);
tableOri.setVisibility(View.INVISIBLE);
}
else{
tableSuggested.setVisibility(View.INVISIBLE);
tableOri.setVisibility(View.VISIBLE);
}
}
});
}
@Override
public void onNothingSelected(AdapterView<?> arg0){
}
});
}
但是,即使没有从微调器中选择任何内容,我的两张桌子都会出现。
当我选中并取消选中该复选框时,它会隐藏或显示该表格。但不知何故,如果第一张表不存在,第二张表将不会向上移动。
我想知道我的代码中哪一部分出错了。
提前致谢。
答案 0 :(得分:2)
首先,尝试在java代码中使用setVisibility(View.GONE)
而不是setVisibility(View.INVISIBLE)
。其次,在表格布局中使用android:visibility="gone"
。按照this了解上述状态之间的区别。
您是否使用 RelativeLayout 作为指定小部件的父级?