我无法水平滚动视图。代码:
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>
这里是左侧按钮,右侧按钮等的数组列表,需要动态添加按钮并且需要水平滚动。请帮助我。它应该画一条线,以匹配下一行旁边的每一行的按钮。预先感谢。
使用HorizontalScrollView
代替ScrollView
进行水平滚动。或者,您可以将RecyclerView
和LayoutManager
与Orientation.HORIZONTAL
]结合使用