2014-12-04 86 views
3

我形成我的應用程序一樣佈局tabhost幾個ImageView的。當我選擇一個項目時,圖像會改變。但是,我試圖點擊它,沒有任何反應!爲什麼???ImageView的選擇不工作

activity_main.xml中

<TableLayout 
    android:id="@+id/main_tab_bar" 
    android:layout_width="match_parent" 
    android:layout_height="0dp" 
    android:layout_weight="1" 
    android:stretchColumns="0,1,2,3,4"> 
    <TableRow 
     android:layout_width="match_parent" 
     android:layout_height="wrap_content"> 
     <ImageView 
      android:id="@+id/news" 
      android:clickable="true" 
      android:focusable="true" 
      android:layout_width="wrap_content" 
      android:layout_height="wrap_content" 
      android:src="@drawable/main_tab_news_selector"/> 
     <ImageView 
      android:id="@+id/share" 
      android:clickable="true" 
      android:focusable="true" 
      android:layout_width="wrap_content" 
      android:layout_height="wrap_content" 
      android:src="@drawable/main_tab_share_selector"/> 
     <ImageView 
      android:id="@+id/camera" 
      android:clickable="true" 
      android:focusable="true" 
      android:layout_width="wrap_content" 
      android:layout_height="wrap_content" 
      android:src="@drawable/main_tab_camera_selector"/> 
     <ImageView 
      android:id="@+id/status" 
      android:clickable="true" 
      android:focusable="true" 
      android:layout_width="wrap_content" 
      android:layout_height="wrap_content" 
      android:src="@drawable/main_tab_status_selector"/> 
     <ImageView 
      android:id="@+id/others" 
      android:clickable="true" 
      android:focusable="true" 
      android:layout_width="wrap_content" 
      android:layout_height="wrap_content" 
      android:src="@drawable/main_tab_others_selector"/> 
    </TableRow> 
</TableLayout> 

main_tab_news_selector.xml(其他選擇都只是類似)

<?xml version="1.0" encoding="utf-8"?> 
<selector xmlns:android="http://schemas.android.com/apk/res/android" > 
    <item 
     android:drawable="@drawable/ic_action_time" 
     android:state_focused="true" 
     /> 
    <item android:drawable="@drawable/ic_action_view_as_list" /> 

</selector> 

回答

4

你繪製的XML代碼看起來應該是這樣

<selector 
    xmlns:android="http://schemas.android.com/apk/res/android"> 
    <item android:state_pressed="true" android:drawable="@drawable/pressed.png" /> 
    <item android:state_selected="true" android:drawable="@drawable/select.png" /> 
    <item android:state_activated="true" android:drawable="@drawable/pressed.png" /> 
    <item android:drawable="@drawable/normal.png" /> 
</selector> 
+0

沒有,爲什麼你不使用圖像按鈕,它不工作 – Simon 2014-12-04 05:07:40

+0

? – Amy 2014-12-04 05:09:53

+0

它只能按下,但我怎麼能選擇它?像選擇一個選項卡? – Simon 2014-12-04 05:10:23

0

設置focusableInTouchMode爲真,並聽取其中的state_focus講師。

它解決了問題:)

activity_main.xml中

<TableLayout 
    android:id="@+id/main_tab_bar" 
    android:layout_width="match_parent" 
    android:layout_height="0dp" 
    android:layout_weight="1" 
    android:stretchColumns="0,1,2,3,4"> 
    <TableRow 
     android:layout_width="match_parent" 
     android:layout_height="wrap_content"> 
     <ImageView 
      android:id="@+id/news" 
      android:clickable="true" 
      android:focusable="true" 
      android:focusableInTouchMode="true" 
      android:layout_width="wrap_content" 
      android:layout_height="wrap_content" 
      android:src="@drawable/main_tab_news_selector"/> 
     <ImageView 
      android:id="@+id/share" 
      android:clickable="true" 
      android:focusable="true" 
      android:focusableInTouchMode="true" 
      android:layout_width="wrap_content" 
      android:layout_height="wrap_content" 
      android:src="@drawable/main_tab_share_selector"/> 
     <ImageView 
      android:id="@+id/camera" 
      android:clickable="true" 
      android:focusable="true" 
      android:focusableInTouchMode="true" 
      android:layout_width="wrap_content" 
      android:layout_height="wrap_content" 
      android:src="@drawable/main_tab_camera_selector"/> 
     <ImageView 
      android:id="@+id/status" 
      android:clickable="true" 
      android:focusable="true" 
      android:focusableInTouchMode="true" 
      android:layout_width="wrap_content" 
      android:layout_height="wrap_content" 
      android:src="@drawable/main_tab_status_selector"/> 
     <ImageView 
      android:id="@+id/others" 
      android:clickable="true" 
      android:focusable="true" 
      android:focusableInTouchMode="true" 
      android:layout_width="wrap_content" 
      android:layout_height="wrap_content" 
      android:src="@drawable/main_tab_others_selector"/> 
    </TableRow> 
</TableLayout> 

的選擇

<?xml version="1.0" encoding="utf-8"?> 
<selector xmlns:android="http://schemas.android.com/apk/res/android" > 
    <item 
     android:drawable="@drawable/ic_action_time" 
     android:state_focused="true" 
     /> 
    <item 
     android:drawable="@drawable/ic_action_time" 
     android:state_pressed="true" 
     /> 

    <item android:drawable="@drawable/ic_action_airplane_mode_on" /> 

</selector> 
0

你必須改變

  1. ImageViewImageButton
  2. srcbackground

src也適用屁股拿給周圍繪製一些空間。

android:state_focused="true"以前android:drawable="@drawable/ic"

3

只需添加到您的ImageView

android:clickable="true" 
+0

完全爲我工作。 – 2015-09-16 06:59:09