为什么我的setVisibility视图不能正确显示?

问题描述:

我想根据复选框首选项显示相对布局。现在,无论复选框处于何种状态,布局都消失了。为什么我的setVisibility视图不能正确显示?

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

您是否已将代码放入调试中以确保它完全进入if语句?另外,在XML中设置的可见性属性是什么? – hooked82

+0

@ hooked82我的if语句正在工作,并且我尝试在我的布局中将可见性属性设置为“可见”,但没有任何更改。 – adneal

您的代码有缺陷 - 无论复选框状态如何,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)行来测试它是否显示,然后我会检查您的布局或将其发布到此处。

+0

我尝试在相对布局的支架下添加“android:visibility =”visible“,并且没有任何更改。如果我完全删除View.GONE布局显示,所以我不知道我的问题在哪里 – adneal

+0

是否有其他设置您的视图的可见性,还是您发布的代码与您拥有的代码不同?不管您对View.GONE行做什么,因为该行永远不会运行。如果您更新了以上代码,那么它必须意味着对'UNREAD_COUNT_ENABLED_KEY'的偏好不被选中,'UNREAD_COUNT_ENABLED_KEY'使用的是错误的键,或者该偏好不是复选框的首选项 –

+0

我想通了,我没有添加我的相对布局作为属性。 – adneal