2017-11-23 16 views
0

アンドロイドスタジオのリストビューでアクティビティの背景色を変更しようとしていますが、リストビュー内のアイテムをクリックしても何も起こりません。誰か助けてくれますか?リストビュー内のアイテムでアクティビティの背景色を変更するにはどうすればいいですか?

@Override 
public void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    setContentView(R.layout.activity_main); 
    setListAdapter(new ArrayAdapter<String>(this, R.layout.row,R.id.label,items)); 

    view = this.getWindow().getDecorView(); 
    view.setBackgroundResource(R.color.white); 
} 


public void onListItemClick(ListView parent, View v, char position, long id) { 
    String s = label.getText().toString(); 
    double l = Double.parseDouble(s); 
    double o; 
    switch (position) { 
     case 0: 
      view.setBackgroundResource(R.color.red); 
      break; 
     case 1: 
      view.setBackgroundResource(R.color.green); 
      break; 
     case 2: 
      view.setBackgroundResource(R.color.white); 
      break; 
     case 3: 
      view.setBackgroundResource(R.color.orange); 
      break; 

    } 
} 

activity_main.xml

<ListView 
    android:id="@android:id/list" 
    android:layout_width="fill_parent" 
    android:layout_height="wrap_content" /> 
+0

の背景色を変更します私はactivity_mainで質問を更新したウルactivity_main xmlファイル –

+0

を表示.xml – wanjari

答えて

0

から:

view.setBackgroundResource(R.color.red); 

へ:

view.setBackgroundColor(Color.RED); 
+0

私はそれを試しました、ここでは動作しませんでした – wanjari

0

これを行う際に推奨されるプロジェクトファイルにあなたがに行くということですapp/res/valuesおよび公開colors.xml そこでは、このように色を追加します。次に<color name="darkGreen">#669900</color>

をごmainActivity.javaに、あなたがこのいずれかのようなウェブサイトのカラーピッカーを使用することができますしたい色のhexidecimalsを見つける必要がある場合は
Case0: view.setBackgroundColor(getResources().getColor(R.color.darkGreen)); break;

を書きます: https://www.w3schools.com/colors/colors_picker.asp

+0

私はそれを試してみましたが、それでも動作しません – wanjari

0

XML内では、親のレイアウトにandroid:ID属性を指定して、Javaクラスに配線します。 次に、onClickはレイアウトの色を変更し、親レイアウトの背景色を変更する必要があります。

+0

私はどのようにそれを行うのですか? – wanjari

0

これは、あなたが

を使用しているものは何でもレイアウトの種類を選択してください活動に続いてactivity_mainレイアウトであなたのレイアウトに

final LinearLayout layout = (LinearLayout) findViewById(R.id.LinearLayout1); 

    public void onListItemClick(ListView parent, View v, char position, long id) {   
     if(iscolor) 
     { 
      layout.setBackgroundColor(Color.BLUE); 
      iscolor = false; 
     } 
     else 
     { 
      layout.setBackgroundColor(Color.WHITE); 
      iscolor = true; 
     } 

     } 

よう
<LinearLayout 
     android:id="@+id/LinearLayout1" 
    ........ 

をIDを追加する最初の

を動作するはずです

+0

これは、選択した項目の背景色をリストビューで変更したい場合に有効ですが、アクティビティの背景色を変更しようとしています – wanjari

+0

これはさらに簡単です。私の回答を編集します – Rainmaker

+0

なぜあなたはちょうどレイアウトの背景色を変更し、行を変更したくない場合は、項目の – Rainmaker

1

activity_main.xmlを下記のように更新してください

あなたの活動の
<?xml version="1.0" encoding="utf-8"?> 
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" 
    android:id="@+id/background_layout" 
    android:layout_width="match_parent" 
    android:layout_height="match_parent" 
    android:background="@drawable/background_screen" 
    android:focusable="true" 
    android:focusableInTouchMode="true" 
    android:orientation="vertical"> 

<ListView 
    android:id="@android:id/list" 
    android:layout_width="fill_parent" 
    android:layout_height="wrap_content" /> 

</LinearLayout> 

キャストレイアウトとlayout.Thisに背景色を適用するには、画面

private LinearLayout mLayout=null; 

    @Override 
    public void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 
     setContentView(R.layout.activity_main); 
     setListAdapter(new ArrayAdapter<String>(this, R.layout.row,R.id.label,items)); 
     mLayout = (LinearLayout) findViewById(R.id.background_layout); 
     view = this.getWindow().getDecorView(); 
     view.setBackgroundResource(R.color.white); 
    } 


    public void onListItemClick(ListView parent, View v, char position, long id) { 
     String s = label.getText().toString(); 
     double l = Double.parseDouble(s); 
     double o; 
     switch (position) { 
      case 0: 
       mLayout .setBackgroundColor(Color.RED); 
       break; 
      case 1: 
       mLayout .setBackgroundColor(Color.GREEN); 
       break; 
      case 2: 
        mLayout.setBackgroundColor(Color.GREEN); 
       break; 
      case 3: 
       mLayout.setBackgroundColor(Color.parseColor("#FFA500")); 
       break; 
     } 
    } 
関連する問題