好吧,所以我遇到了一个相当奇怪的问题。我认为我这样做是正确的,但是当我尝试在我的任何线性布局上将可见性设置为 GONE 时,会发生一些奇怪的事情。
基本上,我要做的是使用微调器 onItemSelected 侦听器来确定哪些布局是可见的。它基本上是一个表格行、微调器和一个线性布局内的三个线性布局,位于一个相对布局内的滚动视图内。这是其中一部分的第一个 xml,只是没有显示其他 2 个线性布局:
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:orientation="vertical"
tools:context=".Catbug" >
<ScrollView
android:id="@+id/scrollview1"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
tools:ignore="UselessParent" >
<LinearLayout
android:id="@+id/home_layout"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:background="#000000"
android:orientation="vertical" >
<TableRow
android:id="@+id/tableRow1"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:gravity="center|center_horizontal|center_vertical" >
<TextView
android:id="@+id/textView0"
android:layout_width="wrap_content"
android:layout_height="match_parent"
android:layout_gravity="left|center_vertical|fill_vertical|center_horizontal|center"
android:layout_weight="1"
android:text="@string/catbug_quotes"
android:textAppearance="?android:attr/textAppearanceLarge"
android:textSize="36sp" />
<ImageButton
android:id="@+id/catbugback"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:background="@null"
android:src="@drawable/backbuttonpress" android:contentDescription="@string/goback"/>
</TableRow>
<Spinner
android:id="@+id/catbugspinner"
android:layout_width="match_parent"
android:layout_height="0dip"
android:layout_weight="1"
/>
<LinearLayout
android:id="@+id/catbug7_layout"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:orientation="vertical" >
现在,这是相关部分的代码方面:
public void onItemSelected(AdapterView<?> arg0, View arg1, int arg2,
long arg3) {
// TODO Auto-generated method stub
final LinearLayout ep7 = (LinearLayout) findViewById(R.id.catbug7_layout);
final LinearLayout ep10 = (LinearLayout) findViewById(R.id.catbug10_layout);
final LinearLayout ep11 = (LinearLayout) findViewById(R.id.catbug11_layout);
int position = spinner.getSelectedItemPosition();
switch(position){
case 0:
ep7.setVisibility(View.VISIBLE);
ep10.setVisibility(View.VISIBLE);
ep11.setVisibility(View.VISIBLE);
break;
case 1:
ep7.setVisibility(View.VISIBLE);
ep10.setVisibility(View.GONE);
ep11.setVisibility(View.GONE);
break;
case 2:
ep7.setVisibility(View.GONE);
ep10.setVisibility(View.VISIBLE);
ep11.setVisibility(View.GONE);
break;
case 3:
ep7.setVisibility(View.GONE);
ep10.setVisibility(View.GONE);
ep11.setVisibility(View.VISIBLE);
break;
}
}
一般来说,它有效。我不希望某些微调器选项的布局在它们被选中并出现在屏幕顶部后消失。但是,直到我开始滚动它们才真正消失,这带来了一个问题,因为第一个线性布局不需要滚动,因为只有 5 个按钮是可见的。但是,如果我像打算实际滚动一样滑动手指,则不活动的(它已被破坏,仍然可见)linearlayout2 会突然消失。
关于我做错了什么的任何想法?这让我很恼火,因为它确实有效,这只是一种奇怪的“重影”的美学。