使用onClick方法的TextView的可见性/不可见性

时间:2015-12-19 12:57:47

标签: android xml android-layout android-activity

我正在尝试使两个文本视图出现并在同一个单击上消失,然后在下一个单击反之亦然出现并消失。我已阅读此网站上的一些帖子Make Textview Visible by Pressing a ButtonChanging the visibility of a textview in a listview,但这些示例中的解决方案对我不起作用。但是,我借用了他们的一些想法。

   package com.mycompany.screenchangeapplication;

    import android.app.*;
    import android.graphics.drawable.ColorDrawable;
    import android.os.*;
    import android.view.*;
    import android.widget.*;

public class ScreenActivity extends Activity {

    public RelativeLayout container;

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

        container = (RelativeLayout) findViewById(R.id.ScreenActivity);
        container.setOnClickListener(new View.OnClickListener() {

            @Override
            public void onClick(View v) {
                changeScreen(v);
            }
        });
    }

    public void changeScreen(View v) {
        ColorDrawable cd = (ColorDrawable) this.container.getBackground();
        TextView ON = (TextView) findViewById(R.id.ON);
        TextView OFF = (TextView) findViewById(R.id.OFF);

        if (cd != null && cd.getColor() == getResources().getColor(R.color.WHITE)) {
            container.setBackgroundColor(getResources().getColor(R.color.BLACK));
            OFF.setVisibility(View.VISIBLE);
            ON.setVisibility(View.INVISIBLE);
        } else {
            container.setBackgroundColor(getResources().getColor(R.color.WHITE));
            OFF.setVisibility(View.INVISIBLE);
            ON.setVisibility(View.VISIBLE);
        }
    }


}

<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:paddingLeft="@dimen/activity_horizontal_margin"
    android:paddingRight="@dimen/activity_horizontal_margin"
    android:paddingTop="@dimen/activity_vertical_margin"
    android:paddingBottom="@dimen/activity_vertical_margin"
    android:id="@+id/ScreenActivity"
    android:clickable="true"
    tools:context=".ScreenActivity">

    <TextView
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:textAppearance="?android:attr/textAppearanceLarge"
        android:text="ON"
        android:id="@+id/ON"
        android:visibility="visible"
        android:layout_centerVertical="true"
        android:layout_centerHorizontal="true"
        android:textSize="150dp" />

    <TextView
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:textAppearance="?android:attr/textAppearanceLarge"
        android:text="OFF"
        android:id="@+id/OFF"
        android:layout_centerVertical="true"
        android:layout_centerHorizontal="true"
        android:textSize="150dp"
        android:textColor="#ffffff"
        android:visibility="invisible" />

</RelativeLayout>

当我将应用程序放入模拟器时,它会崩溃,所以出现了严重错误。

我不确定如何将View v传递给onClick和changeScreen。我希望传递给onClick的View也会传递给changeScreen,但我不确定这究竟是如何工作的。

在Android Studio中,所有文本似乎都很好(尽管如此)。

2 个答案:

答案 0 :(得分:1)

Step1) 首先,您将 color.xml 文件添加到文件夹中。(您可以使用< strong>任何名称 颜色

Step2 )像这样使用到color.xml:

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

    <color name="White">#FFFFFF</color>
 <!-- White-->
    <color name="Black">#000000 </color>
 <!-- BLACK -->

</resources>

Step3) 更改一点changeScreen()方法:

  public void changeScreen(View v) {
        ColorDrawable cd = (ColorDrawable) this.container.getBackground();
        TextView ON = (TextView) findViewById(R.id.ON);
        TextView OFF = (TextView) findViewById(R.id.OFF);

        if (cd != null && cd.getColor() == getResources().getColor(R.color.Black)) {
            container.setBackgroundColor(getResources().getColor(R.color.White));
            OFF.setVisibility(View.INVISIBLE);
            ON.setVisibility(View.VISIBLE);
        } else {
            container.setBackgroundColor(getResources().getColor(R.color.Black));
            OFF.setVisibility(View.VISIBLE);
            ON.setVisibility(View.INVISIBLE);
        }
    }

答案 1 :(得分:1)

$http({
    method: 'POST',
    url: 'api/addcredentials',
    headers: {
        'Access-Control-Allow-Origin': '*',
        'Content-Type': 'application/json'
    },
    data: JSON.stringify(jsonData),
});