2015-02-26 2 views
0

Я хотел бы создать индикатор, который бы четко показывал пользователю, является ли какая-то особенность моего приложения «ВКЛЮЧЕНА» или «ВЫКЛ». В идеале текстовое поле с белым шрифтом и черным фоном с надписью «OFF», которое изменится на зеленый фон и черный шрифт с надписью «ON». Каков наилучший способ реализации этого? код XML может быть что-то вроде этого,Использование цвета фона и содержимого в качестве индикатора состояния программы

<LinearLayout 
    android:orientation="horizontal" 
    android:layout_width="match_parent" 
    android:layout_height="wrap_content" 
    android:gravity="right"> 
<TextView 
    style="@style/colorSizeStylexml" 
    android:layout_width="wrap_content" 
    android:layout_height="wrap_content" 
    android:layout_marginLeft="10dip" 
    android:text="Tracklog: " /> 

    <TextView 
     android:id="@+id/textView" 
     android:layout_width="40dp" 
     android:layout_height="40dp" 
     android:gravity="center" 
     android:textAppearance="?android:attr/textAppearanceMedium" 
     android:layout_marginRight="10dip" 
     android:text="ON" 
     android:background="#ff58ff2d" 
     android:textStyle="bold" /> 
</LinearLayout> 

С раскладкой что-то вроде этого,

enter image description here

В то время как я могу себе представить, делать макет и условными основном в JAVA, я подозреваю, что сохранение в качестве предпочтительнее использовать большую часть компоновки в XML. Каков наилучший способ сделать это? ТИА

Update Вот ответ как это реализовано,

public void setTracklogOnOffIndicator(View v){ 
    tvOn = (TextView) v.findViewById(R.id.textViewOn); 
    tvOff = (TextView) v.findViewById(R.id.textViewOff); 

    if(MainActivity.iTrackLogFlag == 0) {//tracklog is OFF 
     tvOff.setVisibility(View.VISIBLE); 
     tvOn.setVisibility(View.GONE); 
    }else if((MainActivity.iTrackLogFlag == 1)){//tracklog is ON 
     tvOff.setVisibility(View.GONE); 
     tvOn.setVisibility(View.VISIBLE); 
    } 
} 

... и XML,

 <TextView 
     android:id="@+id/textViewOff" 
     android:layout_width="40dp" 
     android:layout_height="40dp" 
     android:gravity="center" 
     android:textAppearance="?android:attr/textAppearanceMedium" 
     android:layout_marginRight="10dip" 
     android:text="OFF" 
     android:background="#ff000000" 
     android:textStyle="bold" 
     android:focusableInTouchMode="true" 
     android:textColor="#ffffffff" /> 
    <TextView 
     android:id="@+id/textViewOn" 
     android:layout_width="40dp" 
     android:layout_height="40dp" 
     android:gravity="center" 
     android:textAppearance="?android:attr/textAppearanceMedium" 
     android:layout_marginRight="10dip" 
     android:text="ON" 
     android:background="#ff58ff2d" 
     android:textStyle="bold" /> 

ответ

1

Можно определить два TextViews, по одному для каждого состояния, а затем переверните видимость в вашем коде.

onTextView.setVisibility(View.VISIBLE); 
offTextView.setVisibility(View.GONE); 

или наоборот.

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