【发布时间】:2016-02-29 13:53:20
【问题描述】:
我正在尝试在片段中实现一个面板,该面板可以在从屏幕右侧单击按钮时展开。我不能使用抽屉式导航,因为我已经有左右两侧的抽屉式导航了。
我们的想法是实现这样的目标:
我几乎可以使用SlidingDrawer 小部件(已弃用..)来做到这一点,唯一的问题是我不知道如何让 LinearLayout 出现在中间,然后在按钮时移动点击展开SlidingDrawer。
我有以下代码:
public class MainActivity extends AppCompatActivity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
Button handle = (Button) findViewById(R.id.handle);
SlidingDrawer drawer = (SlidingDrawer) findViewById(R.id.slidingDrawer);
drawer.setOnDrawerOpenListener(new SlidingDrawer.OnDrawerOpenListener() {
@Override
public void onDrawerOpened() {
}
});
drawer.setOnDrawerCloseListener(new SlidingDrawer.OnDrawerCloseListener() {
@Override
public void onDrawerClosed() {
}
});
}
}
还有XML 代码:
<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
tools:context="com.test.slidingdrawertest.slidingdrawertest.MainActivity">
<LinearLayout
android:layout_width="match_parent"
android:layout_height="match_parent"
android:gravity="center"
android:orientation="vertical">
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="TEST TEST TEST" />
</LinearLayout>
<LinearLayout
android:layout_alignParentEnd="true"
android:layout_width="wrap_content"
android:layout_height="match_parent">
<SlidingDrawer
android:id="@+id/slidingDrawer"
android:layout_width="200dp"
android:layout_height="400dp"
android:layout_marginTop="100dp"
android:layout_gravity="end"
android:content="@+id/content"
android:handle="@+id/handle"
android:orientation="horizontal">
<Button
android:id="@+id/handle"
style="?android:attr/borderlessButtonStyle"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="Expand" />
<LinearLayout
android:id="@+id/content"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical">
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="TEST TEST TEST" />
</LinearLayout>
</SlidingDrawer>
</LinearLayout>
</RelativeLayout>
【问题讨论】:
-
你的 LinearLayout 必须向左然后在另一个比他更近时变小?就像在展开的面板和左限制之间压缩一样
-
@Tritri 是的,没错。我试图改变
LinearLayout的严重性,但没有成功。目前,当我尝试获取LinearLayout并更改参数时,我得到了java.lang.ClassCastException: android.widget.RelativeLayout$LayoutParams cannot be cast to android.widget.LinearLayout$LayoutParams异常.. -
我认为这个错误是因为您的 LinearLayout 依赖于 RelativeLayout 所以:
RelativeLayout.LayoutParams params = new RelativeLayout.LayoutParams(RelativeLayout.LayoutParams.MATCH_PARENT, RelativeLayout.LayoutParams.MATCH_PARENT);您设置的重力是针对 textView 而不是 linearLayout 本身,但是如果您在 LinearLayout 中,layout_gravity 会起作用.但即使这样,如果它可以工作,我也不知道。我会用代码做更多的事情。
标签: android android-layout android-linearlayout slidingdrawer