android - 切换 View 可见性

标签 android view toggle visibility

我发现了很多关于 View 的问题visibility 。我已经知道 .GON​​E 和 .GON​​E 之间的区别。 INVISIBLE 。我不知道如何进行适当的切换来使它们。 VISIBLE/.GONE每当单击按钮时。

这是我需要的:我有一个 linear layout与一些buttons里面。我需要它们buttons首先隐藏,所以我设置了 linear layout消失了:

<LinearLayout
    android:id="@+id/feelings_layout"
    android:layout_below="@+id/feeling_btn"
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    android:orientation="vertical"
    android:visibility="gone">

    <LinearLayout
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:orientation="horizontal">
        <Button
            android:id="@+id/happy_btn"
            android:layout_width="0dp"
            android:layout_weight="1"
            android:layout_height="46dp"
            android:text="Happy"/>
        <Button
            android:id="@+id/sad_btn"
            android:layout_width="0dp"
            android:layout_weight="1"
            android:layout_height="46dp"
            android:text="Sad"/>
    </LinearLayout>

    <LinearLayout
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:orientation="horizontal">
        <Button
            android:id="@+id/love_btn"
            android:layout_width="0dp"
            android:layout_weight="1"
            android:layout_height="46dp"
            android:text="in love"/>
        <Button
            android:id="@+id/mad_btn"
            android:layout_width="0dp"
            android:layout_weight="1"
            android:layout_height="46dp"
            android:text="mad"/>
    </LinearLayout>

</LinearLayout>

然后我就制作它们。 VISIBLE当单击按钮时 和 . GONE再次相同时button被按下:

Button feelingsButton = (Button)contentView.findViewById(R.id.feeling_btn);
    feelingsButton.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View v) {
            Toast.makeText(context, "button clicked", Toast.LENGTH_LONG).show();
            feelingsButtonsLayout = (LinearLayout)contentView.findViewById(R.id.feelings_layout);
            if(feelingsButtonsLayout.getVisibility() == View.GONE){
                Log.d("-----------", "gone");
                feelingsButtonsLayout.setVisibility(View.VISIBLE);

            }else{
                Log.d("-----------", "not gone");
                for ( int i = 0; i < feelingsButtonsLayout.getChildCount();  i++ ){
                    View view = feelingsButtonsLayout.getChildAt(i);
                    view.setVisibility(View.GONE);
                }
                feelingsButtonsLayout.setVisibility(View.GONE);
            }
        }
    });

一切似乎都工作正常,但是当我第三次单击同一个按钮时,期望它能够进行布局 VISIBLE ,即使我的log它也不会再出现了说 View 是 gone (只看Logcat,似乎工作正常)。

对此有什么想法吗?

最佳答案

您必须再次设置所有按钮的可见性,这些按钮在第二次点击时设置为GONE,因为

第一次点击 => 将布局设​​置为可见,并且所有按钮均已可见

第二次点击=>设置布局以及所有按钮消失

第三次点击=>设置布局可见,但按钮仍然不可见,第二次点击时按钮设置为消失

  if(feelingsButtonsLayout.getVisibility() == View.GONE){
                Log.d("-----------", "gone");
                for ( int i = 0; i < feelingsButtonsLayout.getChildCount();  i++ ){
                    View view = feelingsButtonsLayout.getChildAt(i);
                    view.setVisibility(View.VISIBLE);
                }
                feelingsButtonsLayout.setVisibility(View.VISIBLE);

            }else{
                Log.d("-----------", "not gone");
                for ( int i = 0; i < feelingsButtonsLayout.getChildCount();  i++ ){
                    View view = feelingsButtonsLayout.getChildAt(i);
                    view.setVisibility(View.GONE);
                }
                feelingsButtonsLayout.setVisibility(View.GONE);
            } 

您可以删除两个循环并简单地设置您的容器布局可见性

  if(feelingsButtonsLayout.getVisibility() == View.GONE){
                Log.d("-----------", "gone");
                feelingsButtonsLayout.setVisibility(View.VISIBLE);

            }else{
                Log.d("-----------", "not gone");
                feelingsButtonsLayout.setVisibility(View.GONE);
            } 

关于android - 切换 View 可见性,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42579849/

相关文章:

javascript - 使用 jQuery 切换卡片位置

jQuery css toggle - 需要添加淡入淡出动画过渡

Android:强制 MapView 重绘

javascript - 如何在 Phonegap 中创建嵌套目录

python - 如何使用 django 模板中的列表遍历字典?

android - 在 ScrollView/ListView 下方布置 View

android - Intent .ACTION_SEND Whatsapp

java - Android,实际时间问题

mysql - 哪个是更快的 View 或子查询?

jquery - 这个的简写是什么?