2015-12-19 2 views
-1

Я пытаюсь сделать два текстовых изображения появляться и исчезать одним и тем же кликом, а затем на следующем клике vica versa появляются и исчезают. Я прочитал несколько сообщений на этом сайте, Make Textview Visible by Pressing a Button и Changing the visibility of a textview in a listview, но решения в этих примерах не работают для меня. Однако я заимствовал некоторые из их идей.Changong visibilty/invisibiloty TextView Использование метода onClick

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 и to changeScreen. Я надеюсь, что View, переданный onClick, также будет передан changeScreen, но я не уверен, как именно это будет работать.

В Android Studio весь текст кажется прекрасным (его не было).

+0

Что ошибка, вы получаете? –

+0

Сбой приложения. Ошибка настолько массивная, что я не могу опубликовать ее здесь. Проблема, по-видимому, исходит из настройки видимости, и View – Permian

+0

может отправить ваш логарифм здесь или сообщить, какую ошибку вы получаете – Umair

ответ

1

Step1) Сначала добавьте color.xml файл в значений папку. (Вы можете использовать любое имя для цвета)

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); 
     } 
    } 
+0

Извинения Я уже поместил цвета в colors.xml – Permian

+0

Im не уверен, почему вы поменяли белый и черный цвета на changeScreen() – Permian

+0

Этот код работает для вас? – shayan

1
button.setOnClickListener(new View.OnClickListener() { 
    @Override 
    public void onClick(View arg0) { 

     textview.setVisibility(textview.getVisibility() == View.VISIBLE ? View.GONE : View.VISIBLE); 

    } 
}); 
+2

Пожалуйста, старайтесь избегать просто демпинга кода в качестве ответа и попытаться объяснить, что он делает и почему. Ваш код может быть не очевидным для людей, у которых нет соответствующего опыта в кодировании. – Frits