两个滚动视图,这可能吗?

问题描述

我的代码可以得到一些帮助吗?我需要红色区域才能垂直滚动。我需要黑色区域才能垂直和水平滚动。我还附加了一些.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);
    tableRow.addView(textViewSat);

    // Ref1 Column
    TextView textViewRef1 = new TextView(this);
    textViewRef1.setText("R-22");
    textViewRef1.setTypeface(Typeface.DEFAULT,Typeface.BOLD);
    textViewRef1.setPadding(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);
    tableRow.addView(textViewRef2);

    // Ref3 Column
    TextView textViewRef3 = new TextView(this);
    textViewRef3.setText("R-123");
    textViewRef3.setTypeface(Typeface.DEFAULT,Typeface.BOLD);
    textViewRef3.setPadding(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);
    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);
    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);
    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,0);
    tableRow.addView(textViewSat);

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

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

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

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

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

    // Ref6 Column
    textViewRef6 = new TextView(this);
    textViewRef6.setText("----------");
    textViewRef6.setTypeface(Typeface.DEFAULT,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);
        tableRow.addView(textViewSat);

        // Ref1 Column
        TextView textViewRef1 = new TextView(this);
        textViewRef1.setText(product.getRef1());
        textViewRef1.setTypeface(Typeface.DEFAULT,Typeface.BOLD);
        textViewRef1.setPadding(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);
        tableRow.addView(textViewRef2);

        // Ref3 Column
        TextView textViewRef3 = new TextView(this);
        textViewRef3.setText(product.getRef3());
        textViewRef3.setTypeface(Typeface.DEFAULT,Typeface.BOLD);
        textViewRef3.setPadding(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);
        tableRow.addView(textViewRef4);

        // Ref5 Column
        TextView textViewRef5 = new TextView(this);
        textViewRef5.setText(product.getRef5());
        textViewRef5.setTypeface(Typeface.DEFAULT,Typeface.BOLD);
        textViewRef5.setPadding(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);
        tableRow.addView(textViewRef6);

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

}

Android Studio app

解决方法

好,来自大量研究。我了解到这在android中尚不可能。如果我错了,请纠正我,但是我发现ScrollView无法滚动垂直和水平滚动。