使用scrollView和Constraint布局的奇怪输出

时间:2017-08-03 11:39:21

标签: android android-constraintlayout

public static ComboViewer createComboViewer(Composite parent) {
    CCombo combo = new CCombo(parent, SWT.BORDER);
    combo.setTextLimit(2);
    combo.addVerifyListener(new UpperCaseKeyListener());
    ComboViewer viewer = new ComboViewer(combo);
    viewer.setContentProvider(ArrayContentProvider.getInstance());
    viewer.setLabelProvider(new CustomLabelProvider());

    String[] strings = {"AB","CD","EF","GH","IJ"};

    viewer.getCCombo().addKeyListener(new KeyAdapter() {
        public void keyReleased(KeyEvent keyEvent) {
            String key = viewer.getCCombo().getText();
            System.out.println(key);
            String[] items = viewer.getCCombo().getItems();
            if (!key.equals("") && key.length()==2) {
                for (int i=0;i<strings.length;i++) {
                    if (strings[i].contains(key)) {
                        final ISelection selection = new StructuredSelection(strings[i]);
                        viewer.setSelection(selection); 
                    }
                }
            }
        }
    });

请检查此图片here的输出。

双方内容都不在屏幕之内。我不是为什么?我甚至指定左右16dp(8dp + 8dp)的边距。但我认为它没有成功。 为什么它表现得很奇怪?是因为我在Android版本4.2.1上测试? 或者有任何理由?

OS- 4.2.1

我在5.1.1上检查过它工作正常。

1 个答案:

答案 0 :(得分:1)

输出就是这样,因为:

  1. android:orientation中未指定ConstraintLayout(默认为"horizontal"

  2. android:layout_width值设置为"wrap_content"

  3. 三种解决方案:

    1. android:orientation中的ConstraintLayout更改为"vertical",并将android:layout_widthTextView的{​​{1}}设置为EditText }

    2. 将您的两个观看次数match_parent设置为android:layout_width,然后使用0dp

    3. (最佳解决方案)删除android:weight,将TextView的{​​{1}}设置为android:layout_width。然后在EditText上使用match_parent,如下所示:

      android:hint