我有一个在其中有10个文本视图的linearLayout,但问题是我用数据库的值填充它们,因此大小正在动态变化。
我希望如果要显示的下一个视图不适合在linearlayout中跳过一条线并放在其他视图下方。
这是我的xml代码:
<LinearLayout
android:orientation="horizontal"
android:layout_width="wrap_content"
android:layout_height="wrap_content">
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:textColor="#fff"
android:textSize="12dp"
android:background="#666"
android:text="alfabetico"
android:padding="3dp"
android:layout_margin="3dp"/>
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:textColor="#fff"
android:textSize="12dp"
android:background="#666"
android:text="botellas"
android:padding="3dp"
android:layout_margin="3dp"/>
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:textColor="#fff"
android:textSize="12dp"
android:background="#666"
android:text="barato"
android:padding="3dp"
android:layout_margin="3dp"/>
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:textColor="#fff"
android:textSize="12dp"
android:background="#666"
android:text="botana"
android:padding="3dp"
android:layout_margin="3dp"/>
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:textColor="#fff"
android:textSize="12dp"
android:background="#666"
android:text="caro"
android:padding="3dp"
android:layout_margin="3dp"/>
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:textColor="#fff"
android:textSize="12dp"
android:background="#666"
android:text="entradas"
android:padding="3dp"
android:layout_margin="3dp"/>
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:textColor="#fff"
android:textSize="12dp"
android:background="#666"
android:text="especialidades"
android:padding="3dp"
android:layout_margin="3dp"/>
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:textColor="#fff"
android:textSize="12dp"
android:background="#666"
android:text="postres"
android:padding="3dp"
android:layout_margin="3dp"/>
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:textColor="#fff"
android:textSize="12dp"
android:background="#666"
android:text="refrescos"
android:padding="3dp"
android:layout_margin="3dp"/>
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:textColor="#fff"
android:textSize="12dp"
android:background="#666"
android:text="shots"
android:padding="3dp"
android:layout_margin="3dp"/>
</LinearLayout>
答案 0 :(得分:0)
我建议您创建一个适配器,将数据扩展为文本视图,这样,数据大小永远不会产生问题,应用程序会动态生成TextView。
这是一个例子
将LinearLayout更改为ListView
<ListView
android:id="@+id/listView"
android:layout_width="wrap_content"
android:layout_height="wrap_content">
</ListView>
将TextView放在另一个xml文件中
<强> row.xml 强>
<TextView
android:id="@+id/title"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:textColor="#fff"
android:textSize="12dp"
android:background="#666"
android:text=""
android:padding="3dp"
android:layout_margin="3dp"/>
创建适配器
class dataListAdapter extends BaseAdapter {
private List<String> items;
dataListAdapter(List<String> items) {
this.items = items;
}
public int getCount() {
return items.size();
}
public String getItem(int arg0) {
return items.get(arg0);
}
public long getItemId(int position) {
return position;
}
public View getView(int position, View convertView, ViewGroup parent) {
LayoutInflater inflater = getLayoutInflater();
View row;
row = inflater.inflate(R.layout.row, parent, false);
TextView title = (TextView) row.findViewById(R.id.title);
title.setText(getItem(position));
return (row);
}
}
}
在您的活动中将ListView对象绑定到xml中的ListView并设置适配器
您的活动类
ListView listView = (ListView) findViewById(R.id.listView);
dataListAdapter adapter = new dataListAdapter(/*fetch your data from data base and pass it to this constructor*/);
listView.setAdapter(adapter);
因为我不知道你的数据结构在数据库中,在这个例子中我假设数据只是String
(我假设你需要在TextView中显示一些数据)。如果需要,你可以修改它。
答案 1 :(得分:0)
我不知道这是否有效,但这就是我所做的。
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:orientation="horizontal"
android:layout_width="match_parent"
android:layout_height="wrap_content">
<TableRow
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_below="@+id/tableRow"
android:layout_alignParentLeft="true"
android:layout_alignParentStart="true"
android:weightSum="5">
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:textColor="#fff"
android:textSize="12dp"
android:background="#666"
android:text="especialidades"
android:padding="3dp"
android:layout_margin="3dp"
android:layout_weight="1"
android:gravity="center" />
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:textColor="#fff"
android:textSize="12dp"
android:background="#666"
android:text="postres"
android:padding="3dp"
android:layout_margin="3dp"
android:layout_weight="1"
android:gravity="center" />
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:textColor="#fff"
android:textSize="12dp"
android:background="#666"
android:text="refrescos"
android:padding="3dp"
android:layout_margin="3dp"
android:layout_weight="1"
android:gravity="center" />
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:textColor="#fff"
android:textSize="12dp"
android:background="#666"
android:text="shots"
android:padding="3dp"
android:layout_margin="3dp"
android:layout_weight="1"
android:gravity="center" />
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:textColor="#fff"
android:textSize="12dp"
android:background="#666"
android:text="entradas"
android:padding="3dp"
android:layout_margin="3dp"
android:layout_weight="1"
android:gravity="center" />
</TableRow>
<TableRow
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:id="@+id/tableRow"
android:weightSum="5">
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:textColor="#fff"
android:textSize="12dp"
android:background="#666"
android:text="alfabetico"
android:padding="3dp"
android:layout_margin="3dp"
android:layout_weight="1"
android:gravity="center" />
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:textColor="#fff"
android:textSize="12dp"
android:background="#666"
android:text="botellas"
android:padding="3dp"
android:layout_margin="3dp"
android:layout_weight="1"
android:gravity="center" />
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:textColor="#fff"
android:textSize="12dp"
android:background="#666"
android:text="barato"
android:padding="3dp"
android:layout_margin="3dp"
android:layout_weight="1"
android:gravity="center" />
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:textColor="#fff"
android:textSize="12dp"
android:background="#666"
android:text="botana"
android:padding="3dp"
android:layout_margin="3dp"
android:layout_weight="1"
android:gravity="center" />
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:textColor="#fff"
android:textSize="12dp"
android:background="#666"
android:text="caro"
android:padding="3dp"
android:layout_margin="3dp"
android:layout_weight="1"
android:gravity="center" />
</TableRow>
我将textviews放在tablerows中。每个tablerow有5个textview,权重为5.每个textview的重心为中心,权重为1.
我想你最初可以做的是动态创建一个tablerow并在其中添加你的textview然后在任何布局上添加它(相对于线性)。获取五个数据后,创建另一个tablerow并重复该过程。我想如果你只有10个新的文本视图,那么使用它比知道文本视图是否已经靠近屏幕的一侧要容易得多。