使用文本框背景颜色和内容作为程序状态指示器
Using textbox background color and content as program status indicator
我想创建一个指示器,可以清楚地向用户显示我的应用程序的某个功能是 "ON" 还是 "OFF"。理想情况下,白色字体和黑色背景的文本框会显示 "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>
像这样的布局,
虽然我可以想象主要在 JAVA 中进行布局和条件,但我怀疑在 XML 中保留尽可能多的布局是首选。
最好的方法是什么? TIA
更新
这是已实施的答案,
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" />
您可以定义两个 TextView,每个状态一个,然后在您的代码中翻转可见性。
onTextView.setVisibility(View.VISIBLE);
offTextView.setVisibility(View.GONE);
反之亦然。
我想创建一个指示器,可以清楚地向用户显示我的应用程序的某个功能是 "ON" 还是 "OFF"。理想情况下,白色字体和黑色背景的文本框会显示 "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>
像这样的布局,
虽然我可以想象主要在 JAVA 中进行布局和条件,但我怀疑在 XML 中保留尽可能多的布局是首选。 最好的方法是什么? TIA
更新 这是已实施的答案,
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" />
您可以定义两个 TextView,每个状态一个,然后在您的代码中翻转可见性。
onTextView.setVisibility(View.VISIBLE);
offTextView.setVisibility(View.GONE);
反之亦然。