简体   繁体   中英

add ScrollView and HorizontalScrollView to a TableLayout

my question is like putting a ScrollView HorizontalScrollView and a table containing TextView Array.

This is my main.java:

public class tabla extends Activity {

    SitesList sitesList = null;


    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_tabla);

        TableLayout layout =(TableLayout)findViewById(R.id.tabla);

        TableRow tr[] = new TableRow[80];

        TextView variacion[];
        TextView nemotecnico[];
        TextView precio[];

        try {

            /** Handling XML */
            SAXParserFactory spf = SAXParserFactory.newInstance();
            SAXParser sp = spf.newSAXParser();
            XMLReader xr = sp.getXMLReader();

            /** Send URL to parse XML Tags */
            URL sourceUrl = new URL("http://www.bovalpo.com/cgi-local/xml_bcv.pl?URL=75");

            /** Create handler to handle XML Tags ( extends DefaultHandler ) */
            MyXMLHandler myXMLHandler = new MyXMLHandler();
            xr.setContentHandler(myXMLHandler);
            xr.parse(new InputSource(sourceUrl.openStream()));

        } catch (Exception e) {
            System.out.println("XML Pasing Excpetion = " + e);
        }

        /** Get result from MyXMLHandler SitlesList Object */
        sitesList = MyXMLHandler.sitesList;

        /** Assign textview array lenght by arraylist size */

        nemotecnico = new TextView[sitesList.getNemotecnico().size()];
        variacion = new TextView[sitesList.getVariacion().size()];
        precio = new TextView[sitesList.getPrecio().size()];


        /** Set the result text in textview and add it to layout */
        for (int i = 0; i < sitesList.getRegistro().size(); i++) {

            variacion[i] = new TextView(this);
            variacion[i].setText("   " +sitesList.getVariacion().get(i));

            nemotecnico[i] = new TextView(this);
            nemotecnico[i].setText("   " +sitesList.getNemotecnico().get(i));

            precio[i]  = new TextView(this);
            precio[i].setText("   " + sitesList.getPrecio().get(i));

            Pattern pattern = Pattern.compile("^([a-z: ]*)?+(\\+?[0-9]+([,\\.][0-9]*)?)$");
            Matcher matcher = pattern.matcher(sitesList.getVariacion().get(i));
            if (!matcher.matches())

                variacion[i].setTextColor(Color.parseColor("#ff0000"));
            else
                variacion[i].setTextColor(Color.parseColor("#008000")); 


        }   
        for (int i = 0; i < 80; i++) {
            tr[i] = new TableRow(this);

            tr[i].addView(nemotecnico[i], new TableRow.LayoutParams(1));
            tr[i].addView(precio[i], new TableRow.LayoutParams(2));
            tr[i].addView(variacion[i], new TableRow.LayoutParams(3));

            layout.addView(tr[i], new TableLayout.LayoutParams());

        }
        /** Set the layout view to display */
        setContentView(layout);

    }    
}

As you see in my code:

TableLayout layout =(TableLayout)findViewById(R.id.tabla);  

TableRow tr[] = new TableRow[80];

TextView variacion[];
TextView nemotecnico[];
TextView precio[];

And show the TextView in TableRow

for (int i = 0; i < 80; i++) {
    tr[i] = new TableRow(this);

    tr[i].addView(nemotecnico[i], new TableRow.LayoutParams(1));
    tr[i].addView(precio[i], new TableRow.LayoutParams(2));
    tr[i].addView(variacion[i], new TableRow.LayoutParams(3));

    layout.addView(tr[i], new TableLayout.LayoutParams());

}
/** Set the layout view to display */
setContentView(layout);

But i can't put HorizontalScrollView and ScrollView because my Xml is as shown below.

<TableLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:tools="http://schemas.android.com/tools"
    android:id="@+id/tabla"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:background="@drawable/fondo" >

</TableLayout>

Much appreciate your help, thanks!.

I don't understand why you cannot wrap your entire table in both vertical and horizontal scroll views or wrap the individual cells (whichever you prefer). The first option looks like this:

<ScrollView ...>
    <HorizontalScrollView ...>
        <TableLayout ...>
    </HorizontalScrollView>
</ScrollView>

However this only allows the user to scroll horizontally or vertically for each gesture, not diagonally . But this question covers creating a two dimensional ScrollView: Scrollview vertical and horizontal in android .

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM