george samuel
george samuel

Reputation: 193

android how to make table expand itself as the value gets longer

how to make the textview in the table layout could expand itself, if the value getting longer than the table row?

I've made the look alike table layout(its not table row, but linear layout). And everytime the input get too long the table row somehow will have a weird display, it will looks like it has added margin by itself. the table row moved down a bit.

here is my code:

<?xml version="1.0" encoding="utf-8"?> 
    <TableLayout xmlns:android="http://schemas.android.com/apk/res/android"
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        android:background="@drawable/gambar">
        <TextView 
            android:layout_width="320dp"
            android:layout_height="30dp"
            android:text="@string/skk"
            android:gravity="center"
            android:textColor="#000"
            />
<LinearLayout
    android:layout_width="320dp"
        android:layout_height="30dp"
        android:orientation="horizontal" >
           <TextView
                android:id="@+id/idtenor"
                android:layout_width="50dp"
                android:layout_height="30dp"
                android:textStyle="bold"
                android:textSize="12sp"
                android:textColor="#000000"
                android:text="@string/tenor"
                android:gravity="center"
                android:layout_weight="1"
                android:background="@drawable/cell_shape1"
                 />
           <TextView
                android:id="@+id/idAADM"
                android:layout_width="270dp"
                android:layout_height="30dp"
                android:textStyle="bold"
                android:textSize="12sp"
                android:textColor="#000000"
                android:text="@string/AADM"   
                android:gravity="center"
                android:layout_weight="1"  
                android:background="@drawable/cell_shape1"                            
                />


    </LinearLayout>   

 <LinearLayout
    android:layout_width="320dp"
        android:layout_height="30dp"
        android:orientation="horizontal" >
           <TextView
                android:layout_width="50dp"
                android:layout_height="30dp"
                android:textStyle="bold"
                android:textSize="12sp"
                android:textColor="#000000"
                android:text="@string/thn"
                android:gravity="center"
                android:layout_weight="1"
                android:background="@drawable/cell_shape"
                 />
           <TextView
                android:layout_width="135dp"
                android:layout_height="30dp"
                android:textStyle="bold"
                android:textSize="12sp"
                android:textColor="#000000"
                android:text="@string/tppb"   
                android:gravity="center"
                android:layout_weight="1"  
                android:background="@drawable/cell_shape"                            
                />
           <TextView
                android:layout_width="135dp"
                android:layout_height="30dp"
                android:textStyle="bold"
                android:textSize="12sp"
                android:text="@string/angb"
                android:textColor="#000000"   
                android:gravity="center"
                android:layout_weight="1"  
                android:background="@drawable/cell_shape"                            
                />

    </LinearLayout> 
        <LinearLayout
    android:layout_width="320dp"
        android:layout_height="30dp"
        android:orientation="horizontal" >
           <TextView
                android:id="@+id/id1thn"
                android:layout_width="50dp"
                android:layout_height="30dp"
                android:textStyle="bold"
                android:textSize="12sp"
                android:textColor="#000000"
                android:text="@string/thn1"
                android:gravity="center"
                android:layout_weight="1"
                android:background="@drawable/cell_shape"
                 />
           <TextView
                android:id="@+id/tumbalaa1"
                android:layout_width="135dp"
                android:layout_height="30dp"
                android:textStyle="bold"
                android:textSize="12sp"
                android:textColor="#000000"   
                android:gravity="center"
                android:layout_weight="1"  
                android:background="@drawable/cell_shape"                            
                />
           <TextView
                android:id="@+id/tumbal1"
                android:layout_width="135dp"
                android:layout_height="30dp"
                android:textStyle="bold"
                android:textSize="12sp"
                android:textColor="#000000"   
                android:gravity="center"
                android:layout_weight="1"  
                android:background="@drawable/cell_shape"                            
                />

    </LinearLayout>   

          <LinearLayout
              android:layout_width="320dp"
              android:layout_height="30dp"
              android:orientation="horizontal" >
           <TextView
                android:id="@+id/id2thn"
                android:layout_width="50dp"
                android:layout_height="30dp"
                android:textStyle="bold"
                android:textSize="12sp"
                android:textColor="#000000"
                android:text="@string/thn2"
                android:gravity="center"
                android:layout_weight="1"
                android:background="@drawable/cell_shape"
                 />
           <TextView
                android:id="@+id/tumbalaa2"
                android:layout_width="135dp"
                android:layout_height="30dp"
                android:textStyle="bold"
                android:textSize="12sp"
                android:textColor="#000000"   
                android:gravity="center"
                android:layout_weight="1"  
                android:background="@drawable/cell_shape"                            
                />
           <TextView
                android:id="@+id/tumbal2"
                android:layout_width="135dp"
                android:layout_height="30dp"
                android:textStyle="bold"
                android:textSize="12sp"
                android:textColor="#000000"   
                android:gravity="center"
                android:layout_weight="1"  
                android:background="@drawable/cell_shape"                            
                />

    </LinearLayout>
          <LinearLayout
        android:layout_width="320dp"
        android:layout_height="30dp"
        android:orientation="horizontal" >
           <TextView

                android:id="@+id/id3thn"
                android:layout_width="50dp"
                android:layout_height="30dp"
                android:textStyle="bold"
                android:textSize="12sp"
                android:textColor="#000000"
                android:text="@string/thn3"
                android:gravity="center"
                android:layout_weight="1"
                android:background="@drawable/cell_shape"
                 />
           <TextView
                android:id="@+id/tumbalaa3"
                android:layout_width="135dp"
                android:layout_height="30dp"
                android:textStyle="bold"
                android:textSize="12sp"
                android:textColor="#000000"   
                android:gravity="center"
                android:layout_weight="1"  
                android:background="@drawable/cell_shape"                            
                />
           <TextView
                android:id="@+id/tumbal3"
                android:layout_width="135dp"
                android:layout_height="30dp"
                android:textStyle="bold"
                android:textSize="12sp"
                android:textColor="#000000"   
                android:gravity="center"
                android:layout_weight="1"  
                android:background="@drawable/cell_shape"                            
                />
    </LinearLayout>
      <LinearLayout
    android:layout_width="320dp"
        android:layout_height="30dp"
        android:orientation="horizontal" >
           <TextView

                android:id="@+id/id4thn"
                android:layout_width="50dp"
                android:layout_height="30dp"
                android:textStyle="bold"
                android:textSize="12sp"
                android:textColor="#000000"
                android:text="@string/thn4"
                android:gravity="center"
                android:layout_weight="1"
                android:background="@drawable/cell_shape"
                 />
           <TextView
                android:id="@+id/tumbalaa4"
                android:layout_width="135dp"
                android:layout_height="30dp"
                android:textStyle="bold"
                android:textSize="12sp"
                android:textColor="#000000"   
                android:gravity="center"
                android:layout_weight="1"  
                android:background="@drawable/cell_shape"                            
                />
           <TextView
                 android:id="@+id/tumbal4"
                android:layout_width="135dp"
                android:layout_height="30dp"
                android:textStyle="bold"
                android:textSize="12sp"
                android:textColor="#000000"   
                android:gravity="center"
                android:layout_weight="1"  
                android:background="@drawable/cell_shape"                            
                />

    </LinearLayout>
      <LinearLayout
    android:layout_width="320dp"
        android:layout_height="30dp"
        android:orientation="horizontal" >
           <TextView

                android:id="@+id/id5thn"
                android:layout_width="50dp"
                android:layout_height="30dp"
                android:textStyle="bold"
                android:textSize="12sp"
                android:textColor="#000000"
                android:text="@string/thn5"
                android:gravity="center"
                android:layout_weight="1"
                android:background="@drawable/cell_shape"
                 />
           <TextView
                android:id="@+id/tumbalaa5"
                android:layout_width="135dp"
                android:layout_height="30dp"
                android:textStyle="bold"
                android:textSize="12sp"
                android:textColor="#000000"   
                android:gravity="center"
                android:layout_weight="1"  
                android:background="@drawable/cell_shape"                            
                />
           <TextView
                android:id="@+id/tumbal5"
                android:layout_width="135dp"
                android:layout_height="30dp"
                android:textStyle="bold"
                android:textSize="12sp"
                android:textColor="#000000"   
                android:gravity="center"
                android:layout_weight="1"  
                android:background="@drawable/cell_shape"                            
                />


    </LinearLayout>

    </TableLayout> 

here is the cell_shape from drawable, its a xml file:

<?xml version="1.0" encoding="utf-8"?>
<shape xmlns:android="http://schemas.android.com/apk/res/android" 
                android:shape= "rectangle"  >
        <solid  android:color="#ffffff"/>
        <stroke android:width="1sp"  android:color="#000"/>

</shape>

Upvotes: 1

Views: 86

Answers (2)

zeisuke
zeisuke

Reputation: 192

 <LinearLayout
        android:layout_width="match_parent"   <!-- set width = match_parent -->
        android:layout_height="wrap_content"  <!-- height set wrap_content it will auto append the height -->
        android:orientation="horizontal" <!-- you want ur textview display in horizontal way? -->
        android:layout_marginLeft="10dp"
        android:layout_marginRight="10dp"      >  

           <TextView
                android:id="@+id/idtenor"
                android:layout_width="50dp"
                android:layout_height="wrap_content"   <!-- set to wrap_content -->
                android:textStyle="bold"
                android:textSize="12sp"
                android:textColor="#000000"
                android:text="@string/tenor"
                android:gravity="center"
                android:layout_weight="1"
                android:background="@drawable/cell_shape1"
                 /><TextView
                android:id="@+id/idAADM"
                android:layout_width="270dp"
                android:layout_height="wrap_content"    <!-- set to wrap_content -->
                android:textStyle="bold"
                android:textSize="12sp"
                android:textColor="#000000"
                android:text="@string/AADM"   
                android:gravity="center"
                android:layout_weight="1"  
                android:background="@drawable/cell_shape1"                            
                />


    </LinearLayout>   

if not can try to set the textview became motion horizontally in a fix width

<TextView
               android:id="@+id/idAADM"
               android:layout_width="270dp"
               android:layout_height="50dp"
               android:singleLine="true"
               android:ellipsize="marquee" 
               android:fadingEdge="horizontal"
               android:marqueeRepeatLimit="marquee_forever"
               android:scrollHorizontally="true" 
               android:lines="1"
               android:maxLines="1"
               android:paddingTop="3dp"
               android:text="test test test test "
               android:textColor="#000000"
               android:textSize="11sp"
               android:textStyle="bold" />

in activity.class

textview_idAADM = (TextView) rowView.findViewById(R.id.idAADM);
        textview_idAADM.setSelected(true);

Upvotes: 1

Bhavin Shah
Bhavin Shah

Reputation: 361

Hope its works for you. Use Two xml file.

  1. Table layout
  2. Infinite items i.e ListView.

Table Layout -

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

        <TableRow
            android:id="@+id/hwDateWiseTableRow"
            android:layout_width="fill_parent"
            android:layout_height="wrap_content"
            >

            <TextView
                android:id="@+id/textView1"
                android:layout_width="0dp"
                android:layout_height="wrap_content"
                android:layout_margin="5dp"
                android:layout_weight="1"
                android:textSize="15sp" />

            <TextView
                android:id="@+id/textView2"
                android:layout_width="0dp"
                android:layout_height="wrap_content"
                android:layout_margin="5dp"
                android:layout_weight="1"
                android:textSize="15sp" />

            <TextView
                android:id="@+id/textView3"
                android:layout_width="0dp"
                android:layout_height="wrap_content"
                android:layout_margin="5dp"
                android:layout_weight="1"
                android:textSize="15sp" />
        </TableRow>

    </TableLayout>

Your Listview xml.

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:orientation="vertical" >

    <ListView
        android:id="@+id/listView1"
        android:layout_width="match_parent"
        android:layout_height="wrap_content" >
    </ListView>

</LinearLayout>

Add this lines in your Mainactivity.

adapter = new dateWiseHwAdapter(getApplicationContext(), date,
                        subName, subText);
                listView.setAdapter(adapter);

Bind data in Adapter.

package com.example.sample;

import java.util.ArrayList;
import java.util.List;

import android.content.Context;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.BaseAdapter;
import android.widget.TextView;

public class dateWiseHwAdapter extends BaseAdapter {

    private Context mContext;
    private List<String> date;
    private ArrayList<String> subName;
    private ArrayList<String> subText;
    private LayoutInflater inflater;

    public dateWiseHwAdapter(Context _mContext, List<String> date2,
            ArrayList<String> _subDetails, ArrayList<String> _subText) {
        // TODO Auto-generated constructor stub
        this.mContext = _mContext;
        this.date = date2;
        this.subName = _subDetails;
        this.subText = _subText;
    }

    @Override
    public int getCount() {
        // TODO Auto-generated method stub
        return date.size();
    }

    @Override
    public Object getItem(int position) {
        // TODO Auto-generated method stub
        return date.size();
    }

    @Override
    public long getItemId(int position) {
        // TODO Auto-generated method stub
        return 0;
    }

    @Override
    public View getView(int position, View convertView, ViewGroup parent) {
        // TODO Auto-generated method stub
        View view = null;
        try {
            inflater = (LayoutInflater) mContext
                    .getSystemService(Context.LAYOUT_INFLATER_SERVICE);
            view = inflater.inflate(R.layout.hw_adapter, parent, false);
            TextView txt1 = (TextView) view.findViewById(R.id.date);
            TextView txt2 = (TextView) view.findViewById(R.id.subName);
            TextView txt3 = (TextView) view.findViewById(R.id.subText);
            txt1.setText(this.date.get(position));
            txt2.setText(this.subName.get(position));
            txt3.setText(this.subText.get(position));

        } catch (Exception e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        }

        return view;
    }
}

If code is works for you then correct the answer check mark.

Upvotes: 1

Related Questions