简体   繁体   中英

how to make a textview invisible

this is my first android app so plese bear with me, and also, if you suggest a answer, alternative method of completeing a task, please specify how and also in detail...

Here is my problem, after doing some research, and trying it out, my app FC when I have the following line (specified by *)

private TextView msg;

msg = (TextView) findViewById(R.id.txtviewOut) ;

*    msg.setVisibility(View.INVISIBLE);

I have no idea why

here is the rest of all my code:

main.xml

<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"
    tools:context=".MainActivity$PlaceholderFragment">

    <EditText
        android:id="@+id/textenter"
        android:layout_height="wrap_content"
        android:layout_width="match_parent"
        android:layout_below="@+id/lbledt1"
        android:layout_alignParentLeft="true" />

    <TextView
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="Enter Name"
        android:id="@+id/lbledt1"
        android:layout_marginTop="26dp"
        android:layout_centerHorizontal="true" />

    <TextView
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="Enter your date of birth (e.g. xx July 19xx)"
        android:id="@+id/textView"
        android:layout_below="@+id/textenter"
        android:layout_centerHorizontal="true"
        android:layout_marginTop="57dp" />

    <EditText
        android:id="@+id/editText"
        android:layout_height="wrap_content"
        android:layout_width="match_parent"
        android:layout_below="@+id/textView"
        android:layout_alignParentLeft="true" />

    <Button
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="Press this button"
        android:id="@+id/button"
        android:layout_centerVertical="true"
        android:layout_centerHorizontal="true" />

    <TextView
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:textAppearance="?android:attr/textAppearanceLarge"
        android:text="You have been awesome since"
        android:id="@+id/txtviewOut"
        android:layout_marginTop="86dp"
        android:textIsSelectable="false"
        android:visibility="invisible"
        android:layout_below="@+id/button"
        android:layout_centerHorizontal="true" />

    <TextView
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:textAppearance="?android:attr/textAppearanceLarge"
        android:id="@+id/txtoutName"
        android:textIsSelectable="false"
        android:layout_alignBottom="@+id/txtviewOut"
        android:layout_centerHorizontal="true"
        android:layout_marginBottom="41dp" />

    <TextView
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:textAppearance="?android:attr/textAppearanceLarge"
        android:id="@+id/txtOutDate"
        android:layout_marginTop="28dp"
        android:textIsSelectable="false"
        android:layout_below="@+id/txtviewOut"
        android:layout_centerHorizontal="true" />

</RelativeLayout>

and here is from MainActivity.java

package com.example.helloandroidstudio;

import android.support.v7.app.ActionBarActivity;
import android.support.v7.app.ActionBar;
import android.support.v4.app.Fragment;
import android.os.Bundle;
import android.view.LayoutInflater;
import android.view.Menu;
import android.view.MenuItem;
import android.view.View;
import android.view.ViewGroup;
import android.os.Build;
import android.widget.Button;
import android.widget.EditText;
import android.widget.TextView;

public class MainActivity extends ActionBarActivity {

    private Button btnClick;
    private EditText Name, Date;
    private TextView msg, NameOut, DateOut;
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.main);
        btnClick = (Button) findViewById(R.id.button) ;
        btnClick.setOnClickListener(this);
        Name = (EditText) findViewById(R.id.textenter) ;
        Date = (EditText) findViewById(R.id.editText) ;
        msg = (TextView) findViewById(R.id.txtviewOut) ;
        msg.setVisibility(View.INVISIBLE);
        NameOut = (TextView) findViewById(R.id.txtoutName) ;
        DateOut = (TextView) findViewById(R.id.txtOutDate) ;
        if (savedInstanceState == null) {
            getSupportFragmentManager().beginTransaction()
                    .add(R.id.container, new PlaceholderFragment())
                    .commit();
        }
    }

    public void onClick(View v)
    {
        if (v == btnClick)
        {
            if (Name.equals("") == false && Date.equals("") == false)
            {
                NameOut = Name;
                DateOut = Date;
                msg.setVisibility(View.VISIBLE);
            }
            else
            {
                msg.setText("Please complete both fields");
                msg.setVisibility(View.VISIBLE);
            }
        }
        return;

    }


    @Override
    public boolean onCreateOptionsMenu(Menu menu) {

        // Inflate the menu; this adds items to the action bar if it is present.
        getMenuInflater().inflate(R.menu.main, menu);
        return true;
    }

    @Override
    public boolean onOptionsItemSelected(MenuItem item) {
        // Handle action bar item clicks here. The action bar will
        // automatically handle clicks on the Home/Up button, so long
        // as you specify a parent activity in AndroidManifest.xml.
        switch (item.getItemId()) {
            case R.id.action_settings:
                return true;
        }
        return super.onOptionsItemSelected(item);
    }

    /**
     * A placeholder fragment containing a simple view.
     */
    public static class PlaceholderFragment extends Fragment {

        public PlaceholderFragment() {
        }

        @Override
        public View onCreateView(LayoutInflater inflater, ViewGroup container,
                Bundle savedInstanceState) {
            View rootView = inflater.inflate(R.layout.fragment_main, container, false);
            return rootView;
        }
    }

}

Any assistance would be appreciated

try to set in xml

android:visibility="invisible"

and in your activity where you want it to be visible

object of texview.setvisibility(View.VISIBLE);

i think it should work,i analysed your code and didn't found any reason to not work.so i only suggest that,try to use:

to make it invisible by changing its opacity
msg.setalpha(0.0f);

and to make it visible by changing its opacity
msg.setalpha(1.0f);

android:visibility="gone" is better than just invisible , because while it is invisible HINT-text is shown anyway. When it is "gone" Android moves other elements to the "gone" element place and all view is more beautiful. Of course depends on case.

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM