我发现了很多关于 View
的问题visibility
。我已经知道 .GONE 和 .GONE 之间的区别。 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/