首页 > 解决方案 > 有没有办法以编程方式在框架布局中创建水平滚动排列?

问题描述

如果我有一个在 xml 中创建的水平视图。

有什么办法可以让我在那个视图中创建一个水平滚动视图吗?

提前致谢。

标签: javaandroid

解决方案


您可以使用HorizontalScrollView https://developer.android.com/reference/android/widget/Horizo​​ntalScrollView

样本

MainActivity.java

package com.dinkar.dummyjava;

import android.os.Bundle;
import android.view.Gravity;
import android.view.ViewGroup;
import android.widget.FrameLayout;
import android.widget.HorizontalScrollView;
import android.widget.ImageView;
import android.widget.LinearLayout;

import androidx.appcompat.app.AppCompatActivity;

public class MainActivity extends AppCompatActivity {

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);

        HorizontalScrollView horizontalScrollView = new HorizontalScrollView(this);
        FrameLayout.LayoutParams layoutParams = new FrameLayout.LayoutParams(ViewGroup.LayoutParams.MATCH_PARENT, ViewGroup.LayoutParams.MATCH_PARENT);
        horizontalScrollView.setLayoutParams(layoutParams);

        LinearLayout linearLayout = new LinearLayout(this);
        LinearLayout.LayoutParams linearParams = new LinearLayout.LayoutParams(ViewGroup.LayoutParams.MATCH_PARENT, ViewGroup.LayoutParams.WRAP_CONTENT);
        linearLayout.setOrientation(LinearLayout.HORIZONTAL);
        linearLayout.setLayoutParams(linearParams);

        horizontalScrollView.addView(linearLayout);

        ImageView imageView1 = new ImageView(this);
        LinearLayout.LayoutParams params1 = new LinearLayout.LayoutParams(ViewGroup.LayoutParams.MATCH_PARENT, ViewGroup.LayoutParams.WRAP_CONTENT);
        params1.setMargins(30, 20, 30, 0);
        params1.gravity = Gravity.CENTER;
        imageView1.setLayoutParams(params1);
        imageView1.setImageResource(R.drawable.ic_launcher_background);
        linearLayout.addView(imageView1);

        ImageView imageView2 = new ImageView(this);
        LinearLayout.LayoutParams params2 = new LinearLayout.LayoutParams(ViewGroup.LayoutParams.MATCH_PARENT, ViewGroup.LayoutParams.WRAP_CONTENT);
        params2.setMargins(0, 20, 30, 0);
        params2.gravity = Gravity.CENTER;
        imageView2.setLayoutParams(params2);
        imageView2.setImageResource(R.drawable.ic_launcher_background);
        linearLayout.addView(imageView2);

        ImageView imageView3 = new ImageView(this);
        LinearLayout.LayoutParams params3 = new LinearLayout.LayoutParams(ViewGroup.LayoutParams.MATCH_PARENT, ViewGroup.LayoutParams.WRAP_CONTENT);
        params3.setMargins(0, 20, 30, 0);
        params3.gravity = Gravity.CENTER;
        imageView3.setLayoutParams(params3);
        imageView3.setImageResource(R.drawable.ic_launcher_background);
        linearLayout.addView(imageView3);

        ImageView imageView4 = new ImageView(this);
        LinearLayout.LayoutParams params4 = new LinearLayout.LayoutParams(ViewGroup.LayoutParams.MATCH_PARENT, ViewGroup.LayoutParams.WRAP_CONTENT);
        params4.setMargins(0, 20, 30, 0);
        params4.gravity = Gravity.CENTER;
        imageView4.setLayoutParams(params4);
        imageView4.setImageResource(R.drawable.ic_launcher_background);
        linearLayout.addView(imageView4);

        ImageView imageView5 = new ImageView(this);
        LinearLayout.LayoutParams params5 = new LinearLayout.LayoutParams(ViewGroup.LayoutParams.MATCH_PARENT, ViewGroup.LayoutParams.WRAP_CONTENT);
        params5.setMargins(0, 20, 30, 0);
        params5.gravity = Gravity.CENTER;
        imageView5.setLayoutParams(params5);
        imageView5.setImageResource(R.drawable.ic_launcher_background);
        linearLayout.addView(imageView5);

        ImageView imageView6 = new ImageView(this);
        LinearLayout.LayoutParams params6 = new LinearLayout.LayoutParams(ViewGroup.LayoutParams.MATCH_PARENT, ViewGroup.LayoutParams.WRAP_CONTENT);
        params6.setMargins(0, 20, 30, 0);
        params6.gravity = Gravity.CENTER;
        imageView6.setLayoutParams(params6);
        imageView6.setImageResource(R.drawable.ic_launcher_background);
        linearLayout.addView(imageView6);

        FrameLayout frameLayout = findViewById(R.id.container);
        if (frameLayout != null) {
            frameLayout.addView(horizontalScrollView);
        }
    }
}

activity_main.xml

<?xml version="1.0" encoding="utf-8"?>
<FrameLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:id="@+id/container"
    android:layout_width="match_parent"
    android:layout_height="wrap_content" />

在此处输入图像描述


推荐阅读