2015-04-04 4 views
2

Я только что начал изучать Android. Немного замешательства я по поводу макетов в XMLКак скрывать макеты/представления программно в Android

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

  2. Как динамически создаваемые представления имеют дело с layout.XML файл?

  3. Если я хочу, чтобы полученные сообщения отображались красным цветом и отправляли сообщения черным цветом, как я могу это сделать?

ответ

0

вы можете установить android: visibility = "gone" в xml или по коду setVisibility (View.gone); для изменения цвета текста вы можете установить android: text color = "# 000000" или по коду setTextColor();

3

Вы можете включать представления в файл макета XML, которые невидимы, пока вы их программно не покажете. Просто используйте "android: visible =" gone "или" android: visible = "invisible" в файле XML.

Например, я включаю следующее в моем файле макета изначально, но это не видно:

<LinearLayout 
     android:id="@+id/pnlLatLong" 
     android:layout_width="match_parent" 
     android:layout_height="wrap_content" 
     android:orientation="vertical" 
     android:visibility="gone" 
     > 
     <TextView 
      android:id="@+id/lblLatLng" 
      android:layout_width="wrap_content" 
      android:layout_height="wrap_content" 
      android:text="@string/lat_long" 
      /> 
     <EditText 
      android:id="@+id/txtLatitude" 
      android:layout_width="match_parent" 
      android:layout_height="wrap_content" 
      android:inputType="numberDecimal|numberSigned" 
      /> 
     <EditText 
      android:id="@+id/txtLongitude" 
      android:layout_width="match_parent" 
      android:layout_height="wrap_content" 
      android:inputType="numberDecimal|numberSigned" 
      /> 
    </LinearLayout> 

В Java коде, когда логика код диктует он должен быть виден, я изменить видимость программно для:

View v = findViewById(R.id.pnlLatLng); 
    v.setVisibility(View.VISIBLE); 
+1

Важно отметить, что INVISIBLE and GONE не являются синонимами. GONE практически удалит представление из макета, при необходимости изменив другие представления, в то время как INVISIBLE просто скроет представление, но не изменит его границы/размер. – Nicklas

Смежные вопросы