不可能点击一个按钮
问题描述:
我有一个奇怪的问题,在屏幕上显示的按钮,但我不能点击。这并不是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>
有什么建议?
谢谢!
答
你有一个FrameLayout
有两个孩子,当它只是想主办一个。 ListView
最后被添加,最终将排在最前面,可能会收到您的所有输入。
答
我认为问题是由您的tablayout的复杂结构造成的。
通常,我使用单独的Activity来控制TabLayout,并将不同的活动作为内容放入到tabhost(tabSpec.setContent(Intent intent)
)中。
其实这应该可以解决您的问题。
顺便说一句,避免使用RelativeLayout
,你可以使用LinearLayout。
我很好奇:为什么在所有元素都低于前一个时使用RelativeLayout - 具有orientation = vertical的LinearLayout可以做到这一点? – 2011-02-09 16:35:31
那么,当前的布局只是我们正在研究的一个模型,所以它从第一个状态(当它确实是一个RelativeLayout)遭受了一些变化。为了排除这个问题的根源,我会尝试改变这一点。 – 2011-02-09 16:46:21
你说*这不是说onClick事件不会触发*,但我在评论中看到你也说*它永远不会进入*。我很困惑。 – Nanne 2011-02-09 16:52:49