我正在尝试创建一个菜单选项,用户可以在其中选择textView可以显示的颜色。例如,用户选择红色,选择一个将textView背景设置为红色的预览按钮。任何建议都会非常感激。
public class UserMenu extends Activity implements OnClickListener {
Button preview;
Spinner spinnerColor;
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_user_menu);
spinnerColor = (Spinner) findViewById(R.id.spinnerColorMenu);
TextView Title = (TextView)findViewById(R.id.ViewModuleTitle);
preview = (Button)findViewById(R.id.previewButton);
preview.setOnClickListener(this);
}
public void onClick(View v)
{
String color = spinnerColor.getSelectedItem().toString();
Title.setBackgroundResource(R.color.color);
}
}
布局
<LinearLayout
xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:orientation="vertical" >
<TextView
android:id="@+id/ViewModuleTitle"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:background="@color/darkBlue"
android:paddingBottom="10dp"
android:paddingLeft="10dp"
android:paddingTop="10dp"
android:text="@string/addModule"
android:textColor="@color/white"
android:textSize="22dp" />
<TextView
android:id="@+id/lableTextModuleCode"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="@string/enterModuleCode"
android:layout_marginLeft="10dp"
android:paddingTop="10dp"
android:paddingBottom="10dp"
style="@style/textColor"/>
<Spinner
android:id="@+id/spinnerColorMenu"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:entries="@array/colorMenu"/>
<Button
android:id="@+id/previewButton"
android:layout_width="150dp"
android:layout_height="wrap_content"
android:layout_marginBottom="10dp"
android:onClick="previewButton"
android:text="@string/addModule" />
</LinearLayout>
答案 0 :(得分:1)
public void onClick(View v)
{
String color = spinnerColor.getSelectedItem().toString();
if(color.equalsignorecase("Red"))
{
Title.setBackgroundColor(Color.RED);
}
else if(color.equalsignorecase("Blue"))
{
Title.setBackgroundColor(Color.Blue);
}
}
更多..
答案 1 :(得分:1)
String color = spinnerColor.getSelectedItem().toString();
Title.setBackgroundResource(R.color.color);
它不起作用,您应该使用switch (color)
答案 2 :(得分:1)
您可以尝试以下方法: -
让colormenu.xml中的color_array如下: -
<item>red</item>
<item>blue</item>
<item>green</item>
<item>black</item>
在onClick中添加以下行: -
int parsed_color = Color.parseColor(color);
以下是修改后的代码: -
公共类MainActivity扩展了Activity实现OnClickListener {
按钮预览;
Spinner spinnerColor;
TextView标题;
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
spinnerColor = (Spinner) findViewById(R.id.spinnerColorMenu);
Title = (TextView)findViewById(R.id.ViewModuleTitle);
preview = (Button)findViewById(R.id.previewButton);
preview.setOnClickListener(this);
}
public void onClick(View v)
{
String color = spinnerColor.getSelectedItem().toString();
int parsed_color = Color.parseColor(color);
Title.setBackgroundColor(parsed_color );
}
}
这很好用。不需要任何if else语句或任何开关。
<强> P.S。方法parseColor()支持#RRGGBB #AARRGGBB&#39; red&#39;,&#39; blue&#39;,&#39; green&#39;,&#39; black&#39;,&#39; white&#39;,&#39; grey&#39;,&#39; cyan&#39;,&#39; magenta&#39;,&#39; yellow&#39;,&#39; lightgray&#39;, &#39;深灰&#39;格式。强>