我試圖在一個片段中實現一個面板,該面板可以在屏幕右側點擊按鈕時展開。我無法使用導航抽屜,因爲我已經從左側和右側都有導航抽屜。如何在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