2012-02-20 69 views
3

我有一個線性佈局,並且實現了onClickListener。 現在我希望當它被點擊時它的背景顏色變成白色並保持這種狀態直到點擊其他東西。當點擊其他東西時,我希望它具有透明背景 如何實現此目的? 在此先感謝如何爲線性佈局提供兩種不同的背景

回答

2

在您的可繪製文件夾中創建兩個可繪製圖像。點擊時,您可以更改佈局的背景。 下面的代碼更改背景:

LinearLayout layout=(LinearLayout) findViewById(R.id.linearlayout); 
    layout.setBackgroundResource(getResources().getDrawable(R.drawable.drawable_name)); 
+0

我怎樣才能做到這一點使用狀態列表可繪製XML。沒有單獨的圖像。我只是想改變背景 – Ankit 2012-02-20 07:30:11

1

我想你也可以只使用一個選擇作爲背景。您可以利用「選定」或「聚焦」狀態在透明和白色之間切換背景。它會是這個樣子:

<LinearLayout 
... 
    android:background="@drawable/bg_list_selector" 
... 
</LinearLayout> 

然後bg_list_selector.xml在您繪製的文件夾:

<?xml version="1.0" encoding="utf-8"?> 
<selector xmlns:android="http://schemas.android.com/apk/res/android"> 
    <item android:state_focused="true" android:drawable="@android:color/transparent" /> 
    <!-- or --> 
    <item android:state_selected="true" android:drawable="@android:color/transparent" /> 
    <item android:drawable="@android:color/white" /> 
</selector> 

具有與StateListDrawable的不同選項的戲,我會說。

+0

我試過這個&它確實工作,但只是暫時的。我的意思是當點擊它時背景發生變化,但不是永久性的。 – Ankit 2012-02-20 09:42:03

+1

定義'永久'。我的猜測是,在你的情況下,'selected'狀態更有趣,但它確實需要你手動設置View的狀態。例如,在['onListItemClick'](http://developer.android.com/reference/android/app/ListActivity.html#onListItemClick%28android.widget.ListView,%20android.view.View,%20int,%20long %29),像'v.setSelected(true)'做類似的事情。 – 2012-02-20 10:07:14