无法水平滚动扩展的相对布局类

问题描述 投票:0回答:1

我无法水平滚动视图。代码:

public class MatchTheFollowingAttempted extends RelativeLayout {

private Context mContext;

int numberOfOneSideButtons = 5;


public MatchTheFollowingAttempted(Context context) {
    super(context);
    mContext = context;
    initialiseView();
}

public MatchTheFollowingAttempted(Context context, AttributeSet attrs) {
    super(context, attrs);
    mContext = context;
    initialiseView();
}

public MatchTheFollowingAttempted(Context context, AttributeSet attrs, int defStyleAttr) {
    super(context, attrs, defStyleAttr);
    mContext = context;
    initialiseView();
}

@RequiresApi(api = Build.VERSION_CODES.LOLLIPOP)
public MatchTheFollowingAttempted(Context context, AttributeSet attrs, int defStyleAttr, int defStyleRes) {
    super(context, attrs, defStyleAttr, defStyleRes);
    mContext = context;
    initialiseView();
}

public void initialiseView() {

    ArrayList<Button> leftSideButtons = new ArrayList<>();
    ArrayList<Button> rightSideButtons = new ArrayList<>();
   ArrayList<Button> rightSideButtons2 = new ArrayList<>();
    ArrayList<Button> rightSideButtons3 = new ArrayList<>();

    ArrayList<MatchTheColumnDrawView> matchTheColumnDrawViewArrayList = new ArrayList<>();
    ArrayList<MatchTheColumnDrawView> matchTheColumnDrawViewArrayList1 = new ArrayList<>();

    ScrollView sv = new ScrollView(mContext);

    for (int i = 0; i < numberOfOneSideButtons; i++) {

        Button mButton = new Button(mContext);

        if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.JELLY_BEAN_MR1) {
            mButton.setId(View.generateViewId());
        }

        LayoutParams layoutParams = new LayoutParams(ViewGroup.LayoutParams.WRAP_CONTENT, ViewGroup.LayoutParams.WRAP_CONTENT);

        if (i != 0) {

            layoutParams.addRule(BELOW, leftSideButtons.get(i-1).getId());

        }

       // layoutParams.setMargins(10, 0, 10, 0);

        mButton.setLayoutParams(layoutParams);
        mButton.setText("Test"+i);

        leftSideButtons.add(mButton);

        addView(mButton);
        sv.setLayoutParams(layoutParams);
    }



    for (int i = 0; i < numberOfOneSideButtons; i++) {

        Button mButton = new Button(mContext);

        if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.JELLY_BEAN_MR1) {
            mButton.setId(View.generateViewId());
        }

        LayoutParams layoutParams = new LayoutParams(ViewGroup.LayoutParams.WRAP_CONTENT, ViewGroup.LayoutParams.WRAP_CONTENT);

        layoutParams.addRule(RIGHT_OF,leftSideButtons.get(i).getId());

        if (i != 0) {

            layoutParams.addRule(BELOW, rightSideButtons.get(i-1).getId());

        }

        layoutParams.setMargins(10, 0, 10, 0);

        mButton.setLayoutParams(layoutParams);
        mButton.setText("Test"+(4-i));

        rightSideButtons.add(mButton);

        addView(mButton);
        sv.setLayoutParams(layoutParams);
    }

    for (int i = 0; i < numberOfOneSideButtons; i++) {

        Button mButton = new Button(mContext);

        if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.JELLY_BEAN_MR1) {
            mButton.setId(View.generateViewId());
        }

        LayoutParams layoutParams = new LayoutParams(ViewGroup.LayoutParams.WRAP_CONTENT, ViewGroup.LayoutParams.WRAP_CONTENT);
        layoutParams.addRule(RIGHT_OF,rightSideButtons.get(i).getId());
        if (i != 0) {

            layoutParams.addRule(BELOW, leftSideButtons.get(i-1).getId());

        }

        layoutParams.setMargins(10, 0, 10, 0);

        mButton.setLayoutParams(layoutParams);
        // mButton.setText("Test"+i);

        rightSideButtons2.add(mButton);

        addView(mButton);

        sv.setLayoutParams(layoutParams);
    }

    for (int i = 0; i < numberOfOneSideButtons; i++) {

        Button mButton = new Button(mContext);

        if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.JELLY_BEAN_MR1) {
            mButton.setId(View.generateViewId());
        }

        LayoutParams layoutParams = new LayoutParams(ViewGroup.LayoutParams.WRAP_CONTENT, ViewGroup.LayoutParams.WRAP_CONTENT);
        layoutParams.addRule(ALIGN_PARENT_RIGHT);
        if (i != 0) {

            layoutParams.addRule(BELOW, leftSideButtons.get(i-1).getId());

        }

        layoutParams.setMargins(10, 0, 10, 0);

        mButton.setLayoutParams(layoutParams);
        // mButton.setText("Test"+i);

        rightSideButtons3.add(mButton);

        addView(mButton);

        sv.setLayoutParams(layoutParams);
    }

    for (int i = 0; i < numberOfOneSideButtons; i++) {

        MatchTheColumnDrawView matchTheColumnDrawView = new MatchTheColumnDrawView(mContext, leftSideButtons.get(i), rightSideButtons.get(4-i), "#000000", null, 4.0f, MatchTheColumnDrawView.LEFT_TO_RIGHT);

        matchTheColumnDrawViewArrayList.add(matchTheColumnDrawView);

        addView(matchTheColumnDrawView);

        MatchTheColumnDrawView matchTheColumnDrawView2 = new MatchTheColumnDrawView(mContext, rightSideButtons.get(i), rightSideButtons2.get(4-i), "#000000", null, 4.0f, MatchTheColumnDrawView.LEFT_TO_RIGHT);

        matchTheColumnDrawViewArrayList1.add(matchTheColumnDrawView2);

        addView(matchTheColumnDrawView2);
    }



}

}

以上是我的代码,请同时检查我的XML文件。

    <?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="match_parent"
        android:fillViewport="true">

            <com.gma.chtfeature.MatchTheFollowingAttempted
                android:layout_width="match_parent"
                android:layout_height="wrap_content"
                android:id="@+id/match">

            </com.gma.chtfeature.MatchTheFollowingAttempted>


    </ScrollView>


</RelativeLayout>

这里是左侧按钮,右侧按钮等的数组列表,需要动态添加按钮并且需要水平滚动。请帮助我。它应该画一条线,以匹配下一行旁边的每一行的按钮。预先感谢。

android canvas scrollview android-relativelayout
1个回答
0
投票

使用HorizontalScrollView代替ScrollView进行水平滚动。或者,您可以将RecyclerViewLayoutManagerOrientation.HORIZONTAL]结合使用

© www.soinside.com 2019 - 2024. All rights reserved.