Android - 如何在线性布局中使按钮更高?

时间:2015-12-24 23:33:48

标签: android android-layout

我在相对布局中有一个线性布局,我想让按钮“更高”'以适应线性布局的高度。

我尝试添加填充,正如您在屏幕截图中看到的那样,布局越来越高'但按钮不是。我试过了#fill; parent',' match_parent'但它并没有什么不同。如何使按钮在高度上扩展?

<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"
android:id="@+id/timerLayout">

<Chronometer
    android:id="@+id/chronometer1"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:layout_alignParentTop="true"
    android:layout_centerHorizontal="true"
    android:layout_marginTop="48dp"
    android:text="@string/chronometer"
    android:textSize="50sp" />

<LinearLayout
    android:id="@+id/buttonLayout"
    android:orientation="horizontal"
    android:paddingLeft="4.0dp"
    android:paddingTop="50.0dp"
    android:paddingRight="4.0dp"
    android:paddingBottom="4.0dp"
    android:layout_width="fill_parent"
    android:layout_height="wrap_content"
    android:layout_alignParentBottom="true">

    <Button
        android:id="@+id/btnReset"
        android:layout_width="0.0dp"
        android:layout_height="fill_parent"
        android:drawableLeft="@drawable/ic_restore_white_24dp"
        android:drawableStart="@drawable/ic_restore_white_24dp"
        android:text="@string/pause_btn"
        android:layout_weight="1.5" />

    <Button
        android:id="@+id/btnStart"
        android:layout_width="0.0dp"
        android:layout_height="fill_parent"
        android:text="@string/start_btn"
        android:drawableLeft="@android:drawable/ic_media_play"
        android:drawableStart="@android:drawable/ic_media_play"
        android:layout_weight="1.5" />

    <Button
        android:id="@+id/btnSave"
        android:layout_width="0.0dp"
        android:layout_height="fill_parent"
        android:text="@string/save_btn"
        android:drawableLeft="@drawable/ic_save_white_24dp"
        android:drawableStart="@drawable/ic_save_white_24dp"
        android:layout_weight="1.0" />
</LinearLayout>

enter image description here

3 个答案:

答案 0 :(得分:1)

你的linearlayout说高度:wrap_content 所以子元素只会占用指定的空间。

尝试给出linearHout的minHeight或简单地删除linearlayout,并在按钮中指定&#34; alignparentbottom = true&#34;。 对于最左边的按钮,给出alignparentStart = true。

答案 1 :(得分:1)

非常仔细地查看您的xml布局文件

 <LinearLayout
    android:id="@+id/buttonLayout"
    android:orientation="horizontal"
    android:paddingLeft="4.0dp"

    android:paddingTop="50.0dp" //this guy 

    android:paddingRight="4.0dp"
    android:paddingBottom="4.0dp"
    android:layout_width="fill_parent"
    android:layout_height="wrap_content"
    android:layout_alignParentBottom="true">

android:paddingTopLinearLayout中每个孩子顶部的空格,因此如果您将其删除,则按钮将适合。

答案 2 :(得分:1)

您看到的额外空间来自线性布局中的填充值,并且您的按钮已经填充了父线性布局。但是您的线性布局指定了以下内容。

import java.awt.Color;
import java.awt.Dimension;
import java.awt.EventQueue;
import java.awt.event.KeyEvent;
import javax.swing.JFrame;
import javax.swing.JMenu;
import javax.swing.JMenuBar;
import javax.swing.JMenuItem;
import javax.swing.JPanel;
import javax.swing.JPopupMenu;
import javax.swing.KeyStroke;
import javax.swing.UIManager;
import javax.swing.UnsupportedLookAndFeelException;
import javax.swing.border.Border;
import javax.swing.border.LineBorder;

public class Test {

    public static void main(String[] args) {
        new Test();
    }

    public Test() {
        EventQueue.invokeLater(new Runnable() {
            @Override
            public void run() {
                try {
                    UIManager.setLookAndFeel(UIManager.getSystemLookAndFeelClassName());
                } catch (ClassNotFoundException | InstantiationException | IllegalAccessException | UnsupportedLookAndFeelException ex) {
                    ex.printStackTrace();
                }

                JMenuBar menuBar = new JMenuBar();
                JMenu menu = new JMenu("Stuff") {
                    private Border border = new LineBorder(Color.RED);
                    @Override
                    public JPopupMenu getPopupMenu() {
                        JPopupMenu menu = super.getPopupMenu();
                        menu.setBorder(border);
                        return menu;
                    }

                };
                JMenuItem mi = new JMenuItem("Help", 'H');
                mi.setAccelerator(KeyStroke.getKeyStroke(KeyEvent.VK_H, KeyEvent.META_MASK));
                menu.add(new JMenuItem("A"));
                menu.add(new JMenuItem("BB"));
                menu.add(new JMenuItem("CCC"));
                menu.add(mi);
                menuBar.add(menu);

                JFrame frame = new JFrame("Testing");
                frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
                frame.add(new TestPane());
                frame.setJMenuBar(menuBar);
                frame.pack();
                frame.setLocationRelativeTo(null);
                frame.setVisible(true);
            }
        });
    }

    public class TestPane extends JPanel {

        public TestPane() {
        }

        @Override
        public Dimension getPreferredSize() {
            return new Dimension(200, 200);
        }

    }

}

如果要查看高度较大的按钮,请将线性布局的高度值更改为:

android:layout_height="wrap_content"