LinearLayout和Visibility GONE问题

时间:2013-05-25 08:48:51

标签: android scrollview android-linearlayout visibility

好吧,所以我遇到了一个相当奇怪的问题。我认为我这样做是正确的,但当我尝试在任何线性布局上将可见性设置为GONE时,会发生一些奇怪的事情。

基本上,我要做的是使用微调器onItemSelected侦听器来确定哪些布局是可见的。它基本上是一个表行,微调器和三个线性布局,位于RelativeLayout内部的scrollview内部的一个linearlayout内。这是它的第一部分xml,只是没有显示其他2个linearlayouts:

<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突然消失了。

关于我做错的任何想法?这让我感到害怕,因为它确实有效,只是具有那种奇怪的“重影”的审美。

1 个答案:

答案 0 :(得分:1)

当您将旋转器的焦点清除到任何其他空间时,您的onItemSelected似乎才会被调用。尝试记录并检查何时调用它 - 当您选择微调器或触摸屏幕时。如果是后者,您可能需要重新访问代码。

或者,您的布局不会失效。如果正确调用了onItemSelected,请在隐藏视图后尝试使布局无效。