2012-11-07 26 views
0

我想創建一個菜單選項,用戶可以在其中選擇一個textView可以顯示的顏色。因此,例如,用戶選擇紅色,選擇一個預覽按鈕,它將設置一個textView背景爲紅色。任何建議將不勝感激。Android:用戶選擇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

知道佈局的樣子會有所幫助 – josephus

回答

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); 
     } 
} 

更多..

+0

我試過類似於上面的方法,但是R.color給了我一個錯誤:無法解析爲變量。 – Calgar99

+0

是否要更改背景顏色? –

+0

看我編輯我的代碼 –

1
String color = spinnerColor.getSelectedItem().toString(); 
Title.setBackgroundResource(R.color.color); 

它不工作,你應該使用switch (color)

1

你可以試試下面的辦法: -

在colormenu.xml
  1. 讓color_array如下: -

    <item>red</item> 
    <item>blue</item> 
    <item>green</item> 
    <item>black</item> 
    
  2. 添加下面一行在你的onClick: -

    INT parsed_color = Color.parseColor(彩色);

  3. 這裏是修改後的代碼: -

公共類MainActivity延伸活動實現OnClickListener {

按鈕預覽;

Spinner spinnerColor;

TextView Title;

@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); 


} 

}

這工作得很好。不需要任何其他語句或任何開關。

P.S. parseColor()方法支持#RRGGBB #AARRGGBB'紅','藍','綠','黑','白','灰色','青色','品紅','黃色','淺灰色', 'darkgray'格式。