Android智能标签布局如何使用居中的等间距标签

时间:2015-10-30 05:11:17

标签: android android-tabs

我正在尝试使用SmartTabLayout库实现与此类似的布局:   https://blog.nus.edu.sg/mobileixd/files/2015/02/1-1g3mmmu.png

我可以添加等间距的标签图标,但它们都靠近屏幕中心放置。或者,我可以有相同间距的标签但没有选中的标签。 我如何实现两者的结合? 我试图通过一些厚度的透明分隔器来实现这一点,但是我无法达到所需的结果。

如何通过中间选定的标签和屏幕两端的其他两个标签实现这种布局?

我正在使用以下布局:

<com.abc.resfree.ui.widgets.SmartTabLayout
        android:id="@+id/tab_layout"
        android:layout_width="match_parent"
        android:layout_height="56dp"
        app:stl_dividerColor="@android:color/transparent"
        app:stl_dividerThickness="30dp"
        app:stl_indicatorColor="@color/transparent"
        app:stl_indicatorThickness="0dp"
        app:stl_underlineColor="@color/transparent"
        app:stl_underlineThickness="0dp"
        app:stl_indicatorAlwaysInCenter="true"
        />

1 个答案:

答案 0 :(得分:1)

没有使用SmartTabLayout库,但我使用的是由android支持库提供的TabLayout。你可以尝试

import java.awt.*;
import java.awt.image.BufferedImage;
import javax.swing.*;
import javax.swing.border.EmptyBorder;

public class LayoutManagersWithIcon {

    private JComponent ui = null;

    LayoutManagersWithIcon() {
        initUI();
    }

    public void initUI() {
        if (ui!=null) return;

        ui = new JPanel(new BorderLayout(4,4));
        ui.setBorder(new EmptyBorder(4,4,4,4));

        JPanel levelPanel = new JPanel(new FlowLayout(FlowLayout.CENTER, 5, 5));
        ui.add(levelPanel, BorderLayout.PAGE_START);
        levelPanel.add(new JRadioButton("Easy"));
        levelPanel.add(new JRadioButton("Medium"));
        levelPanel.add(new JRadioButton("Hard"));

        JPanel startPanel = new JPanel(new FlowLayout(FlowLayout.CENTER, 5, 5));
        ui.add(startPanel, BorderLayout.PAGE_END);
        startPanel.add(new JButton("Play"));

        JLabel label = new JLabel(new ImageIcon(
                new BufferedImage(400, 100, BufferedImage.TYPE_INT_RGB)));
        ui.add(label);
    }

    public JComponent getUI() {
        return ui;
    }

    public static void main(String[] args) {
        Runnable r = new Runnable() {
            @Override
            public void run() {
                try {
                    UIManager.setLookAndFeel(UIManager.getSystemLookAndFeelClassName());
                } catch (Exception useDefault) {
                }
                LayoutManagersWithIcon o = new LayoutManagersWithIcon();

                JFrame f = new JFrame(o.getClass().getSimpleName());
                f.setDefaultCloseOperation(JFrame.DISPOSE_ON_CLOSE);
                f.setLocationByPlatform(true);

                f.setContentPane(o.getUI());
                f.pack();
                f.setMinimumSize(f.getSize());

                f.setVisible(true);
            }
        };
        SwingUtilities.invokeLater(r);
    }
}

这些属性(它们与支持库一起使用!)。你可能想尝试一下。