我有SlidingDrawer的问题。其中的所有按钮都无法点击。
这是我的SlidingDrawer的xml文件:
<?xml version="1.0" encoding="utf-8"?>
<SlidingDrawer xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="110dp"
android:content="@+id/content"
android:handle="@+id/handle">
<Button
android:id="@+id/handle"
android:layout_width="wrap_content"
android:layout_height="30dp"
android:text="@string/menu" />
<LinearLayout
android:id="@+id/content"
android:layout_width="match_parent"
android:layout_height="80dp"
android:layout_gravity="center"
>
<Button
android:id="@+id/btn_video"
style="@style/button_menu_bottom"
android:drawableTop="@drawable/mnu_video"
android:text="@string/video" />
...
...
</LinearLayout>
</SlidingDrawer>
这是我从SlidingDrawer扩展的java文件
package com.example;
import android.content.Context;
import android.util.AttributeSet;
import android.view.LayoutInflater;
import android.widget.Button;
import android.widget.LinearLayout;
import android.widget.SlidingDrawer;
import com.example.R;
public class BottomMenuBar extends SlidingDrawer {
private SlidingDrawer mSlidingDrawer;
private Button mButtonSlidingDrawer;
private LinearLayout mLayoutContent;
private Button mButtonVideo;
private Button mButtonPhoto;
private Button mButtonChat;
private Button mButtonSetting;
public BottomMenuBar2(Context context, AttributeSet attrs) {
super(context, attrs);
String infService = Context.LAYOUT_INFLATER_SERVICE;
LayoutInflater li;
li = (LayoutInflater) getContext().getSystemService(infService);
li.inflate(R.layout.bar_bottom_menu, this, true);
mSlidingDrawer=(SlidingDrawer)findViewById(R.id.sld_bottom_menu);
mButtonSlidingDrawer=(Button)findViewById(R.id.handle);
mLayoutContent=(LinearLayout)findViewById(R.id.content);
mButtonVideo=(Button)findViewById(R.id.btn_video);
mButtonSetting=(Button)findViewById(R.id.btn_setting);
}
public Button getmButtonSlidingDrawer() {
return mButtonSlidingDrawer;
}
public void setmButtonSlidingDrawer(Button mButtonSlidingDrawer) {
this.mButtonSlidingDrawer = mButtonSlidingDrawer;
}
...
Setter & Getter methods
...
}
这是我的main.xml文件:
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:background="@drawable/bg_main"
android:orientation="vertical" >
<RelativeLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_weight="0.1" >
...
Any content
...
</RelativeLayout>
<LinearLayout
android:layout_width="match_parent"
android:layout_height="wrap_content" >
<com.example.BottomMenuBar
android:id="@+id/sld_bottom_menu"
android:layout_width="wrap_content"
android:layout_height="110dp"
android:handle="@+id/handle"
android:content="@+id/content"
/>
</LinearLayout>
</LinearLayout>
答案 0 :(得分:0)
对于滑动抽屉中的按钮,我告诉每个按钮在xml中使用android:onClick
的方法。
<Button
android:id="@+id/sortbutton"
android:layout_width="0dp"
android:layout_height="35dp"
android:layout_weight="1"
android:onClick="SortClickHandler"
android:text="@string/sd_sortmethod_button"
android:textSize="12dp" />
然后在任何适当的活动中定义方法:
public void SortClickHandler(View v) {
// Do stuff here
}
修改强>
我想我发现了你的问题。从开发人员文档here开始,我引用了:
SlidingDrawer should be used as an overlay inside layouts. This means SlidingDrawer
should only be used inside of a FrameLayout or a RelativeLayout for instance.
所以,我认为如果你将你的布局改为RelativeLayout,你会发现你的按钮会起作用。我只是仔细检查了我对滑动抽屉的所有用法,并且在所有情况下,包含它的视图的根元素都是RelativeLayout。
答案 1 :(得分:0)
我不明白为什么要延长SlidingDrawer
。
您应该查看文档here。
<SlidingDrawer
android:id="@+id/drawer"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:handle="@+id/handle"
android:content="@+id/content">
<ImageView
android:id="@id/handle"
android:layout_width="88dip"
android:layout_height="44dip" />
<FrameView
android:id="@id/content"
android:layout_width="match_parent"
android:layout_height="match_parent">
[INSERT VIEWS HERE]
<FrameView>
</SlidingDrawer>
在Activity
中,您甚至在技术上都不需要访问SlidingDrawer
对象(滑动功能已经作为标准配置,它只包含{{1}中的视图},你不需要干涉)。
从content
增益参考中添加[INSERT VIEWS HERE]。然后,您可以在每个按钮上执行Activity
。