我试图在一个片段中实现一个面板,该面板可以在屏幕右侧点击按钮时展开。我无法使用导航抽屉,因为我已经从左侧和右侧都有导航抽屉。如何在SlidingDrawer展开时移动LinearLayout?
的想法是要实现这样的事情:
我几乎能与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必须向左移动然后变小?就像在扩展面板和左边界限之间压缩一样 – king
@Tritri是的,没错。我试图改变'LinearLayout'的重力,但没有成功。目前,我得到一个'java.lang.ClassCastException:android.widget.RelativeLayout $ LayoutParams不能转换为android.widget.LinearLayout $ LayoutParams'异常,当我尝试获取'LinearLayout'并更改参数时.. – Apostrofix
I认为这个错误是因为你的LinearLayout依赖于RelativeLayout,所以:'RelativeLayout。LayoutParams params = new RelativeLayout.LayoutParams(RelativeLayout.LayoutParams.MATCH_PARENT,RelativeLayout.LayoutParams.MATCH_PARENT);'你设置的重力是为textView而不是linearLayout本身,但如果你在LinearLayout中,layout_gravity会起作用。但即使如此,如果它可以工作,我也不会。我会用代码做更多的事情。 – king