2017-05-08 70 views
1

我一直在努力尋找一種方法來做到這一點。如何使用約束佈局以編程方式更改應用程序的背景和前景色

在stackoverflow上有一些答案顯示如何與其他佈局類型,但我找不到或自己弄清楚如何做到這一點時,使用約束佈局?

有什麼建議嗎?

我想要做的是更改我的應用程序的BG/FG顏色,如果某個菜單與相應的顏色被選中。

@Override 
public boolean onOptionsItemSelected(MenuItem item) { 

    int idBC = item.getItemId(); 
    int idFC = item.getItemId(); 

    int idred = item.getItemId(); 


    if (idred == R.id.red) { 

     //IF TRUE CHANGE BACGROUND COLOUR 

     return true; 
    } 


    return super.onOptionsItemSelected(item); 
} 

這裏是我的activity_main.xml

<?xml version="1.0" encoding="utf-8"?> 
<android.support.constraint.ConstraintLayout xmlns:android="http://schemas.android.com/apk/res/android" 
    xmlns:app="http://schemas.android.com/apk/res-auto" 
    xmlns:tools="http://schemas.android.com/tools" 
    android:layout_width="match_parent" 
    android:layout_height="match_parent" 
    tools:context="com.example.martin.ex2.MainActivity"> 




</android.support.constraint.ConstraintLayout> 

而且menu_main.xml

<?xml version="1.0" encoding="utf-8"?> 

<item 
    android:id="@+id/fc" 
    android:title="Foreground Colour"> 

<menu> 
    <item 
     android:id="@+id/red" 
     android:title="Red" /> 
    <item 
     android:id="@+id/blue" 
     android:title="Blue" /> 
    <item 
     android:id="@+id/green" 
     android:title="Green" /> 
</menu> 



</item> 
<item 
    android:id="@+id/bc" 
    android:title="Background Colour"> 

<menu> 
    <item 
     android:id="@+id/brown" 
     android:title="Brown" /> 
    <item 
     android:id="@+id/purple" 
     android:title="Purple" /> 
    <item 
     android:id="@+id/orange" 
     android:title="Orange" /> 
</menu> 
</item> 

+0

燦你添加了代碼的一些部分和你正面臨的問題? – gahfy

+0

@gahfy我添加了一些額外的代碼。我認爲我的問題也可以是一個更一般的問題,這就是爲什麼我最初沒有添加任何代碼。 :) –

+0

好吧,你是什麼意思的前景色?你的意思是包含在約束佈局中的textviews等的顏色? – gahfy

回答

0

對於不斷變化的背景下,您可以撥打setBackground()setBackgroundColor()

爲了改變前景色,你將不得不改變它的視圖中查看,有沒有其他辦法做到這一點

+0

我應該怎麼稱呼這個方法?我應該創建一個對象嗎?你能演示嗎? –

0
TextView tv = (TextView) findViewById(R.id.text_view); 
tv.setBackgroundColor(Color.WHITE); 
0
TextView tv = (TextView) findViewById(R.id.text_view); 
tv.setBackgroundColor(Color.parseColor("#24a2c9")); 
+1

**來自複審隊列**:我可以請求您請您在答案中添加更多上下文。僅有代碼的答案很難理解。如果您可以在帖子中添加更多信息,它可以幫助提問者和未來的讀者。 – RBT

相關問題