【问题标题】:Two scrollviews, is this possible?两个滚动视图,这可能吗?
【发布时间】:2020-08-23 23:08:05
【问题描述】:

我可以就我的代码获得一些帮助吗?我需要红色区域垂直滚动。我需要黑色区域垂直和水平滚动。我还附上了一些 .java 代码和 .xml 代码。我尝试了不同的东西,但总体上无法重现效果。我读到你不能同时拥有两个滚动视图,而不改变孩子或其他东西。不过我不太明白这个说法。

感谢社区!

.xml 代码

<ScrollView
    android:id="@+id/layout"
    android:layout_width="324dp"
    android:layout_height="822dp"
    android:layout_marginEnd="4dp"
    android:layout_marginRight="4dp"
    android:layout_marginBottom="8dp"
    android:fillViewport="true"
    android:scrollbarStyle="outsideInset"
    android:scrollbars="horizontal|vertical"
    app:layout_constraintBottom_toBottomOf="parent"
    app:layout_constraintEnd_toEndOf="parent"
    app:layout_constraintTop_toTopOf="parent"
    app:layout_constraintVertical_bias="0.0">

    <HorizontalScrollView
        android:id="@+id/horizontalView"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_marginTop="5dip"
        android:scrollbars="horizontal|vertical">

        <TableLayout
            android:id="@+id/tableLayoutProduct"
            android:layout_width="match_parent"
            android:layout_height="match_parent"></TableLayout>
    </HorizontalScrollView>
</ScrollView>`

.java代码

public class MainActivity extends AppCompatActivity {

private TableLayout tableLayout;

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

private void initView() {
    tableLayout = (TableLayout) findViewById(R.id.tableLayoutProduct);
}

private void loadData() {
    List<Product> products = new ArrayList<Product>();
    products.add(new Product("-50F", "6.1", "5.2", "29.2","18.7","13.5","17.9"));
    products.add(new Product("-45F", "2.7", "8.0", "29.0", "16.9", "11.1", "16.0"));
    products.add(new Product("-40F", "0.6", "11.0", "28.9", "14.8", "8.4", "13.8"));
    products.add(new Product("-35F", "2.6", "14.4", "28.7","12.5", "5.3", "11.4"));


    createColumns();

    fillData(products);

}

private void createColumns() {
    TableRow tableRow = new TableRow(this);
    tableRow.setLayoutParams(new TableRow.LayoutParams(
            TableRow.LayoutParams.WRAP_CONTENT,
            TableRow.LayoutParams.WRAP_CONTENT));

    // Sat Column
    TextView textViewSat = new TextView(this);
    textViewSat.setText("Sat Temp");
    textViewSat.setTypeface(Typeface.DEFAULT, Typeface.BOLD);
    textViewSat.setPadding(0, 0, 0, 0);
    tableRow.addView(textViewSat);

    // Ref1 Column
    TextView textViewRef1 = new TextView(this);
    textViewRef1.setText("R-22");
    textViewRef1.setTypeface(Typeface.DEFAULT, Typeface.BOLD);
    textViewRef1.setPadding(0, 0, 0, 0);
    tableRow.addView(textViewRef1);

    // Ref2 Column
    TextView textViewRef2 = new TextView(this);
    textViewRef2.setText("R-32");
    textViewRef2.setTypeface(Typeface.DEFAULT, Typeface.BOLD);
    textViewRef2.setPadding(0, 0, 0, 0);
    tableRow.addView(textViewRef2);

    // Ref3 Column
    TextView textViewRef3 = new TextView(this);
    textViewRef3.setText("R-123");
    textViewRef3.setTypeface(Typeface.DEFAULT, Typeface.BOLD);
    textViewRef3.setPadding(0, 0, 0, 0);
    tableRow.addView(textViewRef3);

    // Ref4 Column
    TextView textViewRef4 = new TextView(this);
    textViewRef4.setText("R-134a");
    textViewRef4.setTypeface(Typeface.DEFAULT, Typeface.BOLD);
    textViewRef4.setPadding(0, 0, 0, 0);
    tableRow.addView(textViewRef4);

    // Ref5 Column
    TextView textViewRef5 = new TextView(this);
    textViewRef5.setText("R-401a LIQ");
    textViewRef5.setTypeface(Typeface.DEFAULT, Typeface.BOLD);
    textViewRef5.setPadding(0, 0, 0, 0);
    tableRow.addView(textViewRef5);

    // Ref6 Column
    TextView textViewRef6 = new TextView(this);
    textViewRef6.setText("R-401a VAP");
    textViewRef6.setTypeface(Typeface.DEFAULT, Typeface.BOLD);
    textViewRef6.setPadding(0, 0, 0, 0);
    tableRow.addView(textViewRef6);

    tableLayout.addView(tableRow, new TableLayout.LayoutParams(
            TableRow.LayoutParams.WRAP_CONTENT,
            TableRow.LayoutParams.WRAP_CONTENT));

    // Add Divider
    tableRow = new TableRow(this);
    tableRow.setLayoutParams(new TableRow.LayoutParams(
            TableRow.LayoutParams.WRAP_CONTENT,
            TableRow.LayoutParams.WRAP_CONTENT));

    // Sat Column
    textViewSat = new TextView(this);
    textViewSat.setText("-----------");
    textViewSat.setTypeface(Typeface.DEFAULT, Typeface.BOLD);
    textViewSat.setPadding(0, 0, 0, 0);
    tableRow.addView(textViewSat);

    // Ref1 Column
    textViewRef1 = new TextView(this);
    textViewRef1.setText("-----------");
    textViewRef1.setTypeface(Typeface.DEFAULT, Typeface.BOLD);
    textViewRef1.setPadding(0, 0, 0, 0);
    tableRow.addView(textViewRef1);

    // Ref2 Column
    textViewRef2 = new TextView(this);
    textViewRef2.setText("-----------");
    textViewRef2.setTypeface(Typeface.DEFAULT, Typeface.BOLD);
    textViewRef2.setPadding(0, 0, 0, 0);
    tableRow.addView(textViewRef2);

    // Ref3 Column
    textViewRef3 = new TextView(this);
    textViewRef3.setText("----------");
    textViewRef3.setTypeface(Typeface.DEFAULT, Typeface.BOLD);
    textViewRef3.setPadding(0,0,0,0);
    tableRow.addView(textViewRef3);

    // Ref4 Column
    textViewRef4 = new TextView(this);
    textViewRef4.setText("----------");
    textViewRef4.setTypeface(Typeface.DEFAULT, Typeface.BOLD);
    textViewRef4.setPadding(0,0,0,0);
    tableRow.addView(textViewRef4);

    // Ref5 Column
    textViewRef5 = new TextView(this);
    textViewRef5.setText("----------");
    textViewRef5.setTypeface(Typeface.DEFAULT, Typeface.BOLD);
    textViewRef5.setPadding(0,0,0,0);
    tableRow.addView(textViewRef5);

    // Ref6 Column
    textViewRef6 = new TextView(this);
    textViewRef6.setText("----------");
    textViewRef6.setTypeface(Typeface.DEFAULT, Typeface.BOLD);
    textViewRef6.setPadding(0,0,0,0);
    tableRow.addView(textViewRef6);

    tableLayout.addView(tableRow, new TableLayout.LayoutParams(
            TableRow.LayoutParams.WRAP_CONTENT,
            TableRow.LayoutParams.WRAP_CONTENT));

}
private void fillData(List<Product> products) {
    for (Product product : products) {
        TableRow tableRow = new TableRow(this);
        tableRow.setLayoutParams(new TableRow.LayoutParams(
                TableRow.LayoutParams.WRAP_CONTENT,
                TableRow.LayoutParams.WRAP_CONTENT));

        tableRow.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View view) {
                TableRow currentRow = (TableRow) view;
                TextView textViewId = (TextView) currentRow.getChildAt(0);
                String id = textViewId.getText().toString();
                Toast.makeText(getApplicationContext(), id, Toast.LENGTH_LONG).show();
            }
        });

        // Sat Column
        TextView textViewSat = new TextView(this);
        textViewSat.setText(product.getSat());
        textViewSat.setTypeface(Typeface.DEFAULT, Typeface.BOLD);
        textViewSat.setPadding(0, 0, 0, 0);
        tableRow.addView(textViewSat);

        // Ref1 Column
        TextView textViewRef1 = new TextView(this);
        textViewRef1.setText(product.getRef1());
        textViewRef1.setTypeface(Typeface.DEFAULT, Typeface.BOLD);
        textViewRef1.setPadding(0, 0, 0, 0);
        tableRow.addView(textViewRef1);

        // Ref2 Column
        TextView textViewRef2 = new TextView(this);
        textViewRef2.setText(product.getRef2());
        textViewRef2.setTypeface(Typeface.DEFAULT, Typeface.BOLD);
        textViewRef2.setPadding(0, 0, 0, 0);
        tableRow.addView(textViewRef2);

        // Ref3 Column
        TextView textViewRef3 = new TextView(this);
        textViewRef3.setText(product.getRef3());
        textViewRef3.setTypeface(Typeface.DEFAULT, Typeface.BOLD);
        textViewRef3.setPadding(0, 0, 0, 0);
        tableRow.addView(textViewRef3);

        // Ref4 Column
        TextView textViewRef4 = new TextView(this);
        textViewRef4.setText(product.getRef4());
        textViewRef4.setTypeface(Typeface.DEFAULT, Typeface.BOLD);
        textViewRef4.setPadding(0, 0, 0, 0);
        tableRow.addView(textViewRef4);

        // Ref5 Column
        TextView textViewRef5 = new TextView(this);
        textViewRef5.setText(product.getRef5());
        textViewRef5.setTypeface(Typeface.DEFAULT, Typeface.BOLD);
        textViewRef5.setPadding(0, 0, 0, 0);
        tableRow.addView(textViewRef5);

        // Ref6 Column
        TextView textViewRef6 = new TextView(this);
        textViewRef6.setText(product.getRef6());
        textViewRef6.setTypeface(Typeface.DEFAULT, Typeface.BOLD);
        textViewRef6.setPadding(0, 0, 0, 0);
        tableRow.addView(textViewRef6);

        tableLayout.addView(tableRow, new TableLayout.LayoutParams(
                TableRow.LayoutParams.WRAP_CONTENT,
                TableRow.LayoutParams.WRAP_CONTENT));
    }
}

}

【问题讨论】:

    标签: java android-studio android-scrollview android-tablelayout


    【解决方案1】:

    好的,经过大量研究。我了解到这在 android 中还不可能。如果我错了,请纠正我,但我发现 ScrollView 不能垂直和水平滚动。

    【讨论】:

      猜你喜欢
      • 2021-04-25
      • 2015-02-11
      • 1970-01-01
      • 1970-01-01
      • 2023-03-08
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多