2012-04-08 2 views
2

У меня есть диалог, который создается с помощью этого кода:Видимость TextView в диалоге

final Dialog dialog1 = new Dialog(Test.this); 
dialog1.requestWindowFeature(Window.FEATURE_NO_TITLE); 
dialog1.setContentView(R.layout.test_layout); 
dialog1.setCancelable(true); 
... 

Файл макета «test_layout.xml» содержит типичный TextView:

<TextView 
    android:id="@+id/tv_username" 
    android:layout_width="wrap_content" 
    android:layout_height="wrap_content" 
    android:paddingLeft="10dp" 
    android:textAppearance="?android:attr/textAppearanceMedium" 
    android:text="Test" /> 

Я хочу в код для установки этого TextView невидимым (ушедшим) в некоторых случаях. Я попробовал следующее:

TextView tv = (TextView) dialog1.findViewById(R.id.tv_username); 
tv.setVisibility(TextView.GONE); 

Но TextView все еще появляется в диалоговом окне. Если я установил в XML-файл макета xroid: visibility = "gone", он не появится в диалоговом окне. Но мне нужно сделать это с помощью кода.

Вот весь код:

if (whichButton == 1) { 

      final Dialog dialog1 = new Dialog(Test.this); 
             dialog1.requestWindowFeature(Window.FEATURE_NO_TITLE); 
      dialog1.setContentView(R.layout.test_layout); 
      dialog1.setCancelable(true); 

      TextView tv = (TextView) dialog1.findViewById(R.id.tv_username); 
      tv.setVisibility(View.GONE); 


     ... 
     dialog1.show(); 
} 

Здесь весь файл XML:

<?xml version="1.0" encoding="utf-8"?> 
<LinearLayout 
    xmlns:android="http://schemas.android.com/apk/res/android" 
    android:orientation="vertical" 
    android:layout_width="250dp" 
    android:layout_height="match_parent" 
> 
    <TextView 
     android:id="@+id/tv_name" 
     android:paddingTop="10dp" 
     android:layout_width="wrap_content" 
     android:layout_height="wrap_content" 
     android:paddingLeft="15dp" 
     android:textSize="14dp" 
     android:text="Name:" /> 
    <EditText 
     android:id="@+id/username" 
     android:hint="@string/enterName" 
     android:layout_height="wrap_content" 
     android:layout_width="fill_parent" 
     android:maxLength="15" 
     android:layout_marginLeft="10dp" 
     android:layout_marginRight="10dp" 
     android:scrollHorizontally="true" 
     android:capitalize="words" 
     android:singleLine="true" 
     android:gravity="fill_horizontal" 
     android:textAppearance="?android:attr/textAppearanceMedium" /> 
    <TextView 
     android:id="@+id/tv_username" 
     android:layout_width="wrap_content" 
     android:layout_height="wrap_content" 
     android:paddingLeft="10dp" 
     android:textAppearance="?android:attr/textAppearanceMedium" 
     android:text="Test" /> 
    <TextView 
     android:id="@+id/tv_message" 
     android:layout_width="wrap_content" 
     android:layout_height="wrap_content" 
     android:paddingLeft="15dp" 
     android:textSize="14dp" 
     android:text="@string/message" /> 
    <EditText 
     android:id="@+id/tip" 
     android:layout_height="wrap_content" 
     android:layout_width="fill_parent" 
     android:maxLength="290" 
     android:layout_marginLeft="10dp" 
     android:layout_marginRight="10dp" 
     android:scrollbars="vertical" 
     android:inputType="textMultiLine" 
     android:capitalize="words" 
     android:gravity="fill_horizontal" 
     android:textAppearance="?android:attr/textAppearanceMedium" /> 
    <Button 
     android:id="@+id/button" 
     android:layout_marginLeft="10dp" 
     android:layout_marginRight="10dp" 
     android:layout_width="match_parent" 
     android:layout_height="wrap_content" 
     android:text="@string/send_message" /> 
</LinearLayout> 
+0

попробуйте tv.setVisibility (View.GONE); – Shubhayu

+0

Это также не работает. TextView все еще отображается. Может быть «окончательным» диалогового окна проблема? – tobias

+0

Я думаю, что «final» в основном означает, что вы не можете изменять назначения, но не должны быть проблемой с setVisibility(), но вы можете попробовать один раз. И вы можете сделать это внутри слушателя, и это не позволяет вам делать это, пока что make dialog1 является глобальной переменной. – Shubhayu

ответ

0

Я нашел решение или обходной путь.

Диалог был создан в методе onClick для AlertDialog.

Теперь я использую метод showDialog() и обрабатываю его в соответствующем методе обратного вызова. Там он работает нормально.

Я не понимаю, почему это работает, но я хочу только сказать другим пользователям, как они могут решить эту проблему.

Буду рад, если кто-нибудь может придумать разъяснение.

1

Попробуйте tv.setVisibility(View.INVISIBLE);

+0

это тоже не работает. И мне нужно использовать GONE, потому что я хочу, чтобы пространство также было удалено. – tobias

+0

Почему вы добавили его в свой диалог? Я имею в виду, почему вы это делаете? TextView tv = (TextView) dialog1.findViewById (R.id.tv_username); Используйте tv = (TextView) findViewById (R.id.tv_username) вместо этого ... –

+0

это alsow не работает с tv = (TextView) findViewById (R.id.tv_username) – tobias