代码之家  ›  专栏  ›  技术社区  ›  royatirek

当内容较小时,固定屏幕底部的按钮;如果内容足够大,则固定内容底部的按钮

  •  0
  • royatirek  · 技术社区  · 6 年前

    我使用androidstudio和java来实现这个。
    当内容较小时,将按钮固定在屏幕底部;如果内容足够大,可以占据整个屏幕,则将按钮固定在内容底部。

    1.内容少时
    当内容小到可以占据整个屏幕时,我想在屏幕底部固定两个按钮。

    enter image description here

    2.内容大时

    enter image description here

    下面是第二个实现的代码

    <?xml version="1.0" encoding="utf-8"?>
    <RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="match_parent"
    android:layout_height="match_parent">
    
    <ScrollView
        android:layout_width="match_parent"
        android:layout_height="wrap_content">
        <LinearLayout
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:orientation="vertical">
    
            <android.support.v7.widget.RecyclerView
                android:id="@+id/eachWord"
                android:layout_width="match_parent"
                android:layout_height="wrap_content"
                android:layout_margin="8dp"
                android:scrollbars="vertical" />
    
            <LinearLayout
                android:layout_width="match_parent"
                android:layout_height="wrap_content"
                android:orientation="vertical">
    
                <Button
                    android:id="@+id/perWordHistory"
                    android:layout_width="match_parent"
                    android:layout_height="wrap_content"
                    android:text="History" />
    
    
                <Button
                    android:id="@+id/perWordBack"
                    android:layout_width="match_parent"
                    android:layout_height="wrap_content"
                    android:text="Back" />
    
            </LinearLayout>
    
        </LinearLayout>
    
    
    
    </ScrollView>
    
    
    
    </RelativeLayout>
    

    1 回复  |  直到 6 年前
        1
  •  0
  •   royatirek    6 年前

    问题。

    我首先得到应用程序屏幕的大小,然后从中减去按钮和工具栏的大小。然后我将其设置为我的内容所在的线性布局的最小大小。

    @Override
    public void onWindowFocusChanged(boolean hasFocus) {
        super.onWindowFocusChanged(hasFocus);
    
        Configuration configuration = getResources().getConfiguration();//returns the app screen size.
        int screenHeightDp = configuration.screenHeightDp-56;// 56 is the max height of the android toolbar. 
        float density = this.getResources().getDisplayMetrics().density; 
    
    
        screenHeightDp = (int)(screenHeightDp*density);//changes the dp to pixel
    
    
        Button perWordHistory = findViewById(R.id.perWordHistory);
        int heightOfButton = perWordHistory.getHeight()*2; // as I have two buttons
        screenHeightDp = screenHeightDp - heightOfButton;
    
        LinearLayout linearLayout = findViewById(R.id.layoutContainingRecycleView);
        linearLayout.setMinimumHeight(screenHeightDp);
    }
    

    这是一些修改后的布局代码。

    <?xml version="1.0" encoding="utf-8"?>
    <RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
        android:layout_width="match_parent"
        android:layout_height="match_parent">
        <ScrollView
            android:layout_width="match_parent"
            android:layout_height="wrap_content">
            <LinearLayout
                android:layout_width="match_parent"
                android:layout_height="wrap_content"
                android:orientation="vertical">
    
            <LinearLayout
                android:layout_width="match_parent"
                android:layout_height="wrap_content"
                android:orientation="vertical"
                android:id="@+id/layoutContainingRecycleView">
    
                <android.support.v7.widget.RecyclerView
                    android:id="@+id/eachWord"
                    android:layout_width="match_parent"
                    android:layout_height="wrap_content"
                    android:layout_margin="8dp"
                    android:scrollbars="vertical" />
            </LinearLayout>
    
            <LinearLayout
                android:layout_width="match_parent"
                android:layout_height="wrap_content"
                android:orientation="vertical">
    
                <Button
                    android:id="@+id/perWordHistory"
                    android:layout_width="match_parent"
                    android:layout_height="wrap_content"
                    android:text="@string/title_history" />
    
    
                <Button
                    android:id="@+id/Help"
                    android:layout_width="match_parent"
                    android:layout_height="wrap_content"
                    android:text="@string/help" />
    
            </LinearLayout>
    
    
    
        </LinearLayout>
    
    
        </ScrollView>
    
    
    
    </RelativeLayout>