Not possible to click a Button

十年热恋 提交于 2019-12-25 03:42:52

问题


I'm having a weird issue with a button that is being shown on screen, but that I can't click. It is not that the onClick event is not firing, it seems that physically it does not react to clicks, as if it had a transparent layer on top of it.

The main Activity where it is built on:

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"))));
    }
}

The layout, which is shown perfect on screen is like this:

<?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>

Any suggestions?

Thanks!


回答1:


You have a FrameLayout with two children when it's only intended to host one. The ListView was last added, will end up on top and is probably receiving all of your input.




回答2:


I think the problem is caused by the complex structure of your tablayout.

Usually, I use a separate Activity holding the TabLayout and just put different activities as content into the tabhost (tabSpec.setContent(Intent intent)).

Actually this should solve your problem.

By the way, avoid using RelativeLayout where you could use a LinearLayout.



来源:https://stackoverflow.com/questions/4947512/not-possible-to-click-a-button

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!