OnClickListener 中的可见性

Visibility in an OnClickListener

我在 ImageView 上有这些 TextView。当您单击一个 ImageView 时,该特定 ImageView 上的文本应该出现,而其他 ImageView 上的其余 TextView 应该消失。我该怎么做?

我知道这与 if/else 语句有关,但似乎无法弄清楚我应该对这些语句使用什么。

public class MainActivity extends AppCompatActivity {



    //Declaring instance variable of FirebaseAuth as stated on Firebase Authentication file.
    private FirebaseAuth mAuth;
    //Declaring the Toolbar instance variable.
    private Toolbar mMainAppBar;
    //ViewPager on the activity_main.xml file
    private ViewPager mMainActivityViewPager;
    private TextView mShopTextView;
    private TextView mSocialTextView;
    private TextView mChatTextView;
    private TextView mInventoryTextView;
    private TextView mSettingsTextView;




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

        //Initializing mAuth and the .getInstance() method indicates that there is only a single instance variable for FirebaseAuth.
        mAuth = FirebaseAuth.getInstance();



        //Setting the App Bar on the MainActivity page.
        mMainAppBar = findViewById(R.id.mainToolBar);
        //setSupportActionBar a command given in AppCombatActivity to make the Actionbar a Toolbar.
        //Toolbar is a new view that was introduced to Android to make the designing of Actionbar more flexible.
        setSupportActionBar(mMainAppBar);

        mShopTextView = findViewById(R.id.shopTextView);
        mSocialTextView = findViewById(R.id.socialTextView);
        mChatTextView = findViewById(R.id.chatTextView);
        mInventoryTextView = findViewById(R.id.inventoryTextView);
        mSettingsTextView = findViewById(R.id.settingsTextView);

        mShopTextView.setVisibility(View.GONE);
        mSocialTextView.setVisibility(View.GONE);
        mChatTextView.setVisibility(View.GONE);
        mInventoryTextView.setVisibility(View.GONE);
        mSettingsTextView.setVisibility(View.GONE);



          //Setting up the clicking of ImageViews on the Bottom Navigation bar.
        //How I did it: https://teamtreehouse.com/community/starting-a-fragment-from-an-activity
        ImageView shopImageView = (ImageView) findViewById(R.id.shopImageView);

        shopImageView.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View view) {
                ShopFragment shopFragment = new ShopFragment();
                FragmentTransaction transaction =
                        getSupportFragmentManager().beginTransaction();
                transaction.replace(R.id.mainActivityFrameLayout, shopFragment);
                transaction.commit();

                mShopTextView.setVisibility(View.VISIBLE);

            }
        });

        ImageView socialImageView = (ImageView) findViewById(R.id.socialImageView);

        socialImageView.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View view) {
                SocialFragment socialFragment = new SocialFragment();
                FragmentTransaction transaction =
                        getSupportFragmentManager().beginTransaction();
                transaction.replace(R.id.mainActivityFrameLayout, socialFragment);
                transaction.commit();

                TextView socialTextView = (TextView) findViewById(R.id.socialTextView);
                socialTextView.setVisibility(View.VISIBLE);
            }
        });

        ImageView chatImageView = (ImageView) findViewById(R.id.chatImageView);

        chatImageView.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View view) {
                ChatFragment chatFragment = new ChatFragment();
                FragmentTransaction transaction =
                        getSupportFragmentManager().beginTransaction();
                transaction.replace(R.id.mainActivityFrameLayout, chatFragment);
                transaction.commit();

                TextView chatTextView = (TextView) findViewById(R.id.chatTextView);
                chatTextView.setVisibility(View.VISIBLE);
            }
        });

        ImageView inventoryImageView = (ImageView) findViewById(R.id.inventoryImageView);

        inventoryImageView.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View view) {
                InventoryFragment inventoryFragment = new InventoryFragment();
                FragmentTransaction transaction =
                        getSupportFragmentManager().beginTransaction();
                transaction.replace(R.id.mainActivityFrameLayout, inventoryFragment);
                transaction.commit();

                TextView inventoryTextView = (TextView) findViewById(R.id.inventoryTextView);
                inventoryTextView.setVisibility(View.VISIBLE);
            }
        });

        ImageView settingsImageView = (ImageView) findViewById(R.id.settingsImageView);

        settingsImageView.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View view) {
                SettingsFragment settingsFragment = new SettingsFragment();
                FragmentTransaction transaction =
                        getSupportFragmentManager().beginTransaction();
                transaction.replace(R.id.mainActivityFrameLayout, settingsFragment);
                transaction.commit();

                TextView settingsTextView = (TextView) findViewById(R.id.inventoryTextView);
                settingsTextView.setVisibility(View.VISIBLE);
            }
        });


    }

编辑: 条形图如下所示:Screenshot.

所有这些图标都是 ImageView,"hello" 是 TextView。当我单击一个 ImageView 时,我希望那个特定的 TextView 出现,而​​所有其他 TextView 消失。

你可以用这个方法让所有的textview消失,然后出现想要的textview。

void changeTexViews(View desired ){

       mShopTextView.setVisibility(View.GONE);
        mSocialTextView.setVisibility(View.GONE);
        mChatTextView.setVisibility(View.GONE);
        mInventoryTextView.setVisibility(View.GONE);
        mSettingsTextView.setVisibility(View.GONE);

        desired .setVisibility(View.VISIBLE);

}

并在每个 ImageView.setOnClickListener 中使用此方法,

例如

shopImageView.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View view) {
                ShopFragment shopFragment = new ShopFragment();
                FragmentTransaction transaction =
                        getSupportFragmentManager().beginTransaction();
                transaction.replace(R.id.mainActivityFrameLayout, shopFragment);
                transaction.commit();

                changeTexViews(mShopTextView);
            }
        });
**Here I want to provide some help tips to **

if you want hide or show any element first thing is if you want show all element visible at first time you can set by default visibility to  View.VISIBLE else you can use View.Gone.
and after that in which textview or image view click you want show or hide any element you can perform inside the onClickListener() like below example.



ImageView inventoryImageView = (ImageView) findViewById(R.id.inventoryImageView);
        inventoryImageView.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View view) {
                demotext.setVisibility(View.VISIBLE);
                demoImage.setVisibility(View.Gone)
            }
        });

Momen Zaqout的回答是正确的
我将以更优化的方式重写代码

public class MainActivity 扩展 AppCompatActivity 实现 View.OnClickListener {

//Declaring instance variable of FirebaseAuth as stated on Firebase Authentication file.
private FirebaseAuth mAuth;
//Declaring the Toolbar instance variable.
private Toolbar mMainAppBar;
//ViewPager on the activity_main.xml file
private ViewPager mMainActivityViewPager;
private  TextView mShopTextView,mSocialTextView,mChatTextView,mInventoryTextView,mSettingsTextView;
private ImageView shopImageView,socialImageView,chatImageView,inventoryImageView,settingsImageView;




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

    //Initializing mAuth and the .getInstance() method indicates that there is only a single instance variable for FirebaseAuth.
    mAuth = FirebaseAuth.getInstance();



    //Setting the App Bar on the MainActivity page.
    mMainAppBar = findViewById(R.id.mainToolBar);
    //setSupportActionBar a command given in AppCombatActivity to make the Actionbar a Toolbar.
    //Toolbar is a new view that was introduced to Android to make the designing of Actionbar more flexible.
    setSupportActionBar(mMainAppBar);

    mShopTextView = findViewById(R.id.shopTextView);
    mSocialTextView = findViewById(R.id.socialTextView);
    mChatTextView = findViewById(R.id.chatTextView);
    mInventoryTextView = findViewById(R.id.inventoryTextView);
    mSettingsTextView = findViewById(R.id.settingsTextView);

    shopImageView = (ImageView) findViewById(R.id.shopImageView);
    socialImageView = (ImageView) findViewById(R.id.socialImageView);
    chatImageView = (ImageView) findViewById(R.id.chatImageView);
    inventoryImageView = (ImageView) findViewById(R.id.inventoryImageView);
    settingsImageView = (ImageView) findViewById(R.id.settingsImageView);

    shopImageView.setOnClickListener(this);
    socialImageView.setOnClickListener(this);
    chatImageView.setOnClickListener(this);
    inventoryImageView.setOnClickListener(this);
    settingsImageView.setOnClickListener(this);

    mShopTextView.setVisibility(View.GONE);
    mSocialTextView.setVisibility(View.GONE);
    mChatTextView.setVisibility(View.GONE);
    mInventoryTextView.setVisibility(View.GONE);
    mSettingsTextView.setVisibility(View.GONE);

    @Override
    public void onClick(View v) {
        switch (v.getId()) {

            case R.id.shopImageView:
                ShopFragment shopFragment = new ShopFragment();
                FragmentTransaction transaction =
                        getSupportFragmentManager().beginTransaction();
                transaction.replace(R.id.mainActivityFrameLayout, shopFragment);
                transaction.commit();

                mShopTextView.setVisibility(View.VISIBLE);
                break();

            case R.id.socialImageView:
                SocialFragment socialFragment = new SocialFragment();
                FragmentTransaction transaction =
                        getSupportFragmentManager().beginTransaction();
                transaction.replace(R.id.mainActivityFrameLayout, socialFragment);
                transaction.commit();

                mSocialTextView.setVisibility(View.VISIBLE);

                mShopTextView.setVisibility(View.GONE);
                mChatTextView.setVisibility(View.GONE);
                mInventoryTextView.setVisibility(View.GONE);
                mSettingsTextView.setVisibility(View.GONE);
                                break();


            case R.id.chatImageView:
                ChatFragment chatFragment = new ChatFragment();
                FragmentTransaction transaction =
                        getSupportFragmentManager().beginTransaction();
                transaction.replace(R.id.mainActivityFrameLayout, chatFragment);
                transaction.commit();

                mChatTextView.setVisibility(View.VISIBLE);
                mShopTextView.setVisibility(View.GONE);
                mSocialTextView.setVisibility(View.GONE);
                mInventoryTextView.setVisibility(View.GONE);
                mSettingsTextView.setVisibility(View.GONE);
                    break();


            case R.id.inventoryImageView:
                InventoryFragment inventoryFragment = new InventoryFragment();
                FragmentTransaction transaction =
                        getSupportFragmentManager().beginTransaction();
                transaction.replace(R.id.mainActivityFrameLayout, inventoryFragment);
                transaction.commit();

                mInventoryTextView.setVisibility(View.VISIBLE);
                 mShopTextView.setVisibility(View.GONE);
                mSocialTextView.setVisibility(View.GONE);
                mChatTextView.setVisibility(View.GONE);
                mSettingsTextView.setVisibility(View.GONE);
                    break();


            case R.id.settingsImageView:    
                SettingsFragment settingsFragment = new SettingsFragment();
                FragmentTransaction transaction =
                        getSupportFragmentManager().beginTransaction();
                transaction.replace(R.id.mainActivityFrameLayout, settingsFragment);
                transaction.commit();

                mSettingsTextView.setVisibility(View.VISIBLE);      
                mShopTextView.setVisibility(View.GONE);
                mSocialTextView.setVisibility(View.GONE);
                mChatTextView.setVisibility(View.GONE);
                mInventoryTextView.setVisibility(View.GONE);
                    break();

        }




}