java - 即使将其可见性设置为 true,按钮 View 也不可见

标签 java android xml

我正在制作一个测验应用程序,因此我希望我的 MenuButtonNextButton View 在开始时不可见,但在满足特定条件后我希望 View 再次可见因此我使用了 findViewById(R.id.MenuButton).setVisibility(View.VISIBLE); 和相同的 NextButton 但这些 View 仍然是不可见的。我做错了什么?

<?xml version="1.0" encoding="utf-8"?>

<RelativeLayout

xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:layout_gravity="center">

<TextView
    android:id="@+id/Question"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:layout_alignParentTop="true"
    android:layout_centerHorizontal="true"
    android:layout_marginTop="46dp"
    android:text="TextView"
    android:gravity="center"
    android:textSize="25dp"
    android:textColor="#000000"/>

<RadioButton
    android:id="@+id/radioButton1"
    android:layout_width="wrap_content"
    android:layout_height="25dp"
    android:text="RadioButton1"
    android:textSize="20sp"
    android:textColor="#000000"
    android:layout_marginLeft="43dp"
    android:layout_marginStart="43dp"
    android:layout_marginTop="54dp"
    android:layout_below="@+id/Question"
    android:layout_alignParentLeft="true"
    android:layout_alignParentStart="true"
    android:onClick="On_RadioButton1_Click"/>

<LinearLayout
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    android:id="@+id/linearLayout"
    android:orientation="horizontal"
    android:layout_marginTop="55dp"
    android:layout_below="@+id/radioButton4"
    android:layout_alignParentLeft="true"
    android:layout_alignParentStart="true">

    <Button
        android:id="@+id/MenuButton"
        android:layout_width="wrap_content"
        android:layout_height="match_parent"
        android:layout_marginLeft="40dp"
        android:textSize="20dp"
        android:text="menu" />

    <Button
        android:id="@+id/NextButton"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:textSize="20dp"
        android:layout_marginLeft="125dp"
        android:text="next" />

</LinearLayout>

</RelativeLayout>

//Java文件

private int Question_no=0;
private Boolean Boolean_Var=false;

 @Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_question1);

    String[] Question_Array = getResources().getStringArray(R.array.Question1);
    TextView Questions = (TextView) findViewById(R.id.Question);
    Questions.setText(Question_Array[Question_no]);

    String[] Radio_Button1_Array = getResources().getStringArray(R.array.Option_1);
    RadioButton Radio_Button1 = (RadioButton) findViewById(R.id.radioButton1);
    Radio_Button1.setText(Radio_Button1_Array[Question_no]);

    findViewById(R.id.MenuButton).setVisibility(View.INVISIBLE);
    findViewById(R.id.NextButton).setVisibility(View.INVISIBLE);

}
public void On_RadioButton1_Click(View view)
{
    if(Boolean_Var==false)
    {
        String[] CorrectAns_Array = getResources().getStringArray(R.array.Answer1);
        String CorrectAns = CorrectAns_Array[Question_no];
        String[] Answer_Array = getResources().getStringArray(R.array.Option_1);
        String Answer = Answer_Array[Question_no];


        if(Answer.equals(CorrectAns))
        {
            RadioButton Right_Ans = (RadioButton) findViewById(R.id.radioButton1);
            Right_Ans.setTextColor(Color.GREEN);
            AnswerSubmitted();
        }
        else
        {
            RadioButton Wrong_Ans = (RadioButton) findViewById(R.id.radioButton1);
            Wrong_Ans.setTextColor(Color.RED);
            GreenTick();
            AnswerSubmitted();
         }
    }
    Boolean_Var=true;

}
 public void AnswerSubmitted()
{
    findViewById(R.id.MenuButton).setVisibility(View.VISIBLE);
    findViewById(R.id.NextButton).setVisibility(View.VISIBLE);
}

最佳答案

您应该获得对您的按钮的引用并在该引用上调用 setVisibility。您当前正在做的是在一个引用上设置可见性INVISIBLE,并在另一个引用上设置它VISIBLE

Button nextButton;

//in onCreate
nextButton = (Button)findViewById(R.id.nextButton);
nextButton.setVisibility(View.INVISIBLE);

//in AnswerSubmitted
nextButton.setVisibility(View.VISIBLE);

关于java - 即使将其可见性设置为 true,按钮 View 也不可见,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45906453/

相关文章:

java - Java 的 InnerHTML

java - 使用 openshift 部署 war 时的依赖问题

java - 如何禁用 JTextPane 中特定单词的复制和粘贴?

android - API 18 弃用

java - 可以更改 .properties 文件中的 'absolute' 位置吗?

java - Jsoup - 改进从 html 页面提取图像

android - Android 中自定义 UID、GID 创建

android - 使用从互联网下载的图像延迟加载 GridView

xml - 如何在 Perl 中创建 XML 模板?

javascript - 然而我发现很难理解 JSON