Reputation: 193
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
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
Reputation: 361
Hope its works for you. Use Two xml file.
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