为什么我的setVisibility View无法正确显示?

时间:2011-08-24 22:50:28

标签: java android visibility relativelayout

我正在尝试根据复选框首选项显示相对布局。现在,无论复选框处于什么状态,布局都消失了。

final RelativeLayout unreadCount = (RelativeLayout) findViewById(R.id.header_navigation);
            if(_preferences.getBoolean(UNREAD_COUNT_ENABLED_KEY, false)){
                unreadCount.setVisibility(View.VISIBLE);
            }else{
                if(_preferences.getBoolean(UNREAD_COUNT_ENABLED_KEY, true)){
                unreadCount.setVisibility(View.GONE);
            }
        }

<RelativeLayout
    android:id="@+id/header_navigation"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content" 
    android:gravity="center"
    android:padding="2dp">
    <Button
        android:id="@+id/previous_button" 
        android:layout_height="wrap_content"
        android:layout_width="wrap_content"
        android:layout_alignParentLeft="true"
        android:layout_alignParentTop="true"
        android:hapticFeedbackEnabled="true"
        android:background="@drawable/btn_prev_arrow" />
    <TextView
        android:id="@+id/notification_count_text_view"
        android:layout_height="50dip"  
        android:layout_width="wrap_content" 
        android:layout_alignParentTop="true"
        android:layout_toRightOf="@+id/previous_button" 
        android:layout_toLeftOf="@+id/next_button"
        android:gravity="center"
        android:focusable="true" 
        android:clickable="true"
        android:textAppearance="?android:attr/textAppearanceMedium" 
        android:textColor="@color/white"
        android:text="0/0"/>
    <Button
        android:id="@+id/next_button" 
        android:layout_height="wrap_content"
        android:layout_width="wrap_content"
        android:layout_alignParentRight="true"
        android:layout_alignParentTop="true"
        android:hapticFeedbackEnabled="true"
        android:background="@drawable/btn_next_arrow"/>
</RelativeLayout>

1 个答案:

答案 0 :(得分:2)

您的代码存在缺陷 - 无论复选框状态如何,unreadCount.setVisibility(View.GONE);行都将永远不会运行。如果选中该复选框,则将运行if语句的开始部分。如果未选中,则第二个嵌套if将跳过该行。您需要取出第二个嵌套if:

final RelativeLayout unreadCount = (RelativeLayout) findViewById(R.id.header_navigation);

if(_preferences.getBoolean(UNREAD_COUNT_ENABLED_KEY, false)){
   unreadCount.setVisibility(View.VISIBLE);
}else{
   unreadCount.setVisibility(View.GONE);
}

除此代码段外,您的布局中可能存在导致视图无法显示的缺陷。尝试使用任何条件语句之外的setVisibility(View.VISIBLE)行进行测试以查看它是否显示,然后我会检查您的布局或在此处发布。