问题描述
我的代码可以得到一些帮助吗?我需要红色区域才能垂直滚动。我需要黑色区域才能垂直和水平滚动。我还附加了一些.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中尚不可能。如果我错了,请纠正我,但是我发现ScrollView无法滚动垂直和水平滚动。