0

ユーザーが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>
4

3 に答える 3

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

それは動作しません、あなたは使用する必要がありますswitch (color)

于 2012-11-07T11:41:46.520 に答える
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);
         }
}

もっと..

于 2012-11-07T11:39:47.887 に答える
1

次のアプローチを試すことができます:-

  1. colormenu.xmlのcolor_arrayを次のようにします:-

    <item>red</item>
    <item>blue</item>
    <item>green</item>
    <item>black</item>
    
  2. onClickに次の行を追加します:-

    int parsed_color = Color.parseColor(color);

  3. 変更されたコードは次のとおりです。-

パブリッククラスMainActivityはActivityを拡張し、OnClickListenerを実装します{

ボタンプレビュー;

スピナー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 );


}

}

これは正常に機能します。ifelseステートメントやスイッチは必要ありません。

PSメソッドparseColor()は、#RRGGBB #AARRGGBB'red'、'blue'、'green'、'black'、'white'、'gray'、'cyan'、'magenta'、'yellow'、'lightgray'をサポートしています。 、'darkgray'形式。

于 2012-11-07T13:51:56.410 に答える