2011-02-09 114 views
0

我有一个奇怪的问题,在屏幕上显示的按钮,但我不能点击。这并不是onClick事件不会触发,它似乎在物理上不会对点击产生反应,就好像它在顶部有一个透明层。不可能点击一个按钮

主要Activity它是建立在:

public class MusicList extends Activity implements OnClickListener { 
... 
@Override 
    public void onCreate(Bundle bundle) 
    { 
     super.onCreate(bundle);  

     setContentView(R.layout.mymusic); 
     this.myTabHost = (TabHost)this.findViewById(R.id.th_set_menu_tabhost); 
     this.myTabHost.setup(); 

     TabSpec ts = myTabHost.newTabSpec("TAB_TAG_1"); 

     ts.setIndicator("Media Item",getResources().getDrawable(R.drawable.music));    

     ts.setContent(R.id.media_item_tab); 

     try { 
      relativeLayout = (RelativeLayout) myTabHost.findViewById(android.R.id.tabcontent).findViewById(R.id.media_item_tab); 
     } catch (NullPointerException e) { 
      Log.e(this.getClass().getSimpleName(),"Layout is not correct",e); 
     } 

      Button button = (Button)relativeLayout.findViewById(R.id.play_button); 
      // button.setClickable(true); 
      button.setOnClickListener(this); 
        myTabHost.addTab(ts); 
    } 
    @Override 
    public void onClick(View v) { 
     startActivity(new Intent(Intent.ACTION_VIEW, Uri.parse(itemData.get("ITEM_URL")))); 
    } 
} 

的布局,这是完美的显示在屏幕上是这样的:

<?xml version="1.0" encoding="utf-8"?> 
<TabHost xmlns:android="http://schemas.android.com/apk/res/android" 
    android:id="@+id/th_set_menu_tabhost" 
    android:layout_width="fill_parent" 
    android:layout_height="fill_parent"> 
    <TabWidget 
      android:id="@android:id/tabs" 
      android:layout_width="fill_parent" 
      android:layout_height="fill_parent"/> 
    <FrameLayout 
      android:id="@android:id/tabcontent" 
      android:layout_width="fill_parent" 
      android:layout_height="fill_parent" 
      android:paddingTop="65px"> 

      <RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" 
       android:id="@+id/media_item_tab" 
       android:layout_width="fill_parent" 
       android:layout_height="fill_parent"> 
       <TextView 
       android:id="@+id/media_title" 
       android:layout_width="fill_parent" 
       android:layout_height="wrap_content" 
       android:textSize="30sp" 
       android:textColor="#40A5D9" 
       android:gravity="center" 
       android:layout_alignParentTop="true" 
       android:singleLine="true" 
       android:ellipsize="marquee" 
       android:text="Title" 
       > 
       </TextView> 
       <ImageView 
       android:id="@+id/media_cover" 
       android:layout_width="fill_parent" 
       android:layout_height="180px" 
       android:gravity="center" 
       android:layout_below="@+id/media_title" 
       android:src="@drawable/geniocover"    
       > 
       </ImageView> 
       <TextView 
       android:id="@+id/media_author" 
       android:layout_width="fill_parent" 
       android:layout_height="wrap_content" 
       android:textSize="20sp" 
       android:textColor="#86CCF3" 
       android:gravity="center" 
       android:singleLine="true" 
       android:ellipsize="marquee" 
       android:layout_below="@+id/media_cover" 
       android:text="Author" 
       > 
       </TextView> 
       <TextView 
       android:id="@+id/media_album" 
       android:layout_width="fill_parent" 
       android:layout_height="wrap_content" 
       android:textSize="18sp" 
       android:textColor="#DAFFFF" 
       android:gravity="center" 
       android:singleLine="true" 
       android:ellipsize="marquee" 
       android:layout_below="@+id/media_author"  
       android:text="Album (Year)" 
       > 
       </TextView> 
       <Button 
       android:id="@+id/play_button" 
       android:layout_width="fill_parent" 
       android:layout_height="wrap_content" 
       android:text="Play" 
       android:textColor="#003983" 
       android:textStyle="bold" 
       android:textSize="20sp" 
       android:gravity="center" 
       android:layout_below="@+id/media_album" 
       android:clickable="true"  
       > 
       </Button> 
      </RelativeLayout> 
      <ListView 
      android:id = "@+id/tablist" 
      android:layout_width="fill_parent" 
      android:layout_height="fill_parent" 
      /> 
    </FrameLayout> 
</TabHost> 

有什么建议?

谢谢!

+0

我很好奇:为什么在所有元素都低于前一个时使用RelativeLayout - 具有orientation = vertical的LinearLayout可以做到这一点? – 2011-02-09 16:35:31

+0

那么,当前的布局只是我们正在研究的一个模型,所以它从第一个状态(当它确实是一个RelativeLayout)遭受了一些变化。为了排除这个问题的根源,我会尝试改变这一点。 – 2011-02-09 16:46:21

+0

你说*这不是说onClick事件不会触发*,但我在评论中看到你也说*它永远不会进入*。我很困惑。 – Nanne 2011-02-09 16:52:49

回答

1

你有一个FrameLayout有两个孩子,当它只是想主办一个。 ListView最后被添加,最终将排在最前面,可能会收到您的所有输入。

0

我认为问题是由您的tablayout的复杂结构造成的。

通常,我使用单独的Activity来控制TabLayout,并将不同的活动作为内容放入到tabhost(tabSpec.setContent(Intent intent))中。

其实这应该可以解决您的问题。

顺便说一句,避免使用RelativeLayout,你可以使用LinearLayout。