Android 无法单击按钮
我有一个奇怪的问题,屏幕上显示了一个按钮,但我不能点击。这并不是说Android 无法单击按钮,android,button,android-relativelayout,Android,Button,Android Relativelayout,我有一个奇怪的问题,屏幕上显示了一个按钮,但我不能点击。这并不是说onClick事件没有触发,它似乎在物理上对点击没有反应,好像它上面有一个透明层 主要活动的构建基础: public class MusicList extends Activity implements OnClickListener { ... @Override public void onCreate(Bundle bundle) { super.onCreate(bundle);
onClick
事件没有触发,它似乎在物理上对点击没有反应,好像它上面有一个透明层
主要活动
的构建基础:
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>
有什么建议吗
谢谢 我认为问题是由您的表格布局的复杂结构造成的 通常,我使用一个单独的活动来保存TabLayout,并将不同的活动作为内容放入tabhost(
tabSpec.setContent(Intent-Intent)
)
实际上这应该可以解决你的问题
顺便说一句,如果可以使用线性布局,请避免使用
RelativeLayout
。您有一个FrameLayout
和两个孩子,而它只打算承载一个孩子。ListView
是最后添加的,最终将位于顶部,并且可能会接收您的所有输入。我很好奇:当所有元素都低于上一个元素时,为什么要使用RelativeLayout?方向=垂直的线性布局也可以?好吧,当前布局只是我们正在处理的一个模型,因此,从它的第一个状态(当它确实是一个相对状态)开始,它经历了几次变化。我将尝试改变这一点,以排除这是问题的根源。你说这不是onClick事件没有触发,但我在评论中看到你也说它从未进入。我很困惑。我的意思是,这个问题是之前的问题:按钮不可点击,不是因为它被标记为clickable=false,而是因为该选项卡无法聚焦。该评论的范围是,它显然不是监听器内部视图id检查的问题。的两种方法都适用于选项卡生成,因此我不认为从多个选项卡的同一活动移动到每个选项卡的一个活动是正确的解决方案。它可能会解决这个问题,但有可能用一个单一的活动来完成。它成功了!考虑到布局xml中的顺序有点尴尬,但它解决了我的问题:)谢谢!