我有一个TextView
的Android - 视图失去填充上的ListView滚动
<TextView
android:background="@drawable/myshape"
android:padding="5dp"
... />
具有以下形状设置为背景:
<shape>
<corners android:radius="4dp" />
<solid android:color="#FFFAD6" />
</shape>
的TextView
是ListView
内显示。问题在于滚动时填充已丢失。当列表视图呈现第一它看起来不错:
当列表滚动来回填充丢失:
我缺少什么?
编辑下面的代码:
public class MyArrayAdapter extends ArrayAdapter<MyBean> {
private Context context;
private List<MyBean> myBeans;
public MyArrayAdapter(Context context, int resource, int textViewResourceId, List<MyBean> myBeans) {
super(context, resource, textViewResourceId, myBeans);
this.context = context;
this.myBeans = myBeans;
}
@Override
public View getView(int position, View convertView, ViewGroup parent) {
View row = convertView;
if (row == null) {
LayoutInflater inflater = ((Activity) context).getLayoutInflater();
row = inflater.inflate(R.layout.my_activity, parent, false);
}
MyBean bean = myBeans.get(position);
setData(row, bean);
return row;
}
private void setData(View layout, MyBean bean) {
TextView dateHeader = (TextView) layout.findViewById(R.id.dateHeader);
dateHeader.setText(bean.getDate());
TextView textView1 = (TextView) layout.findViewById(R.id.box);
textView1.setText("textView 1");
TextView box = (TextView) layout.findViewById(R.id.box);
box.setText(Html.fromHtml("<b>Foo</b><br><small>Bar</small>"));
// etc..
}
}
public class MyActivity extends Activity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.my_activity);
ListView listView = new ListView(this);
setContentView(listView);
ArrayAdapter<MyBean> arrayAdapter = new MyBeanArrayAdapter(
this, R.layout.my_activity, R.id.dateHeader, getBeans());
listView.setAdapter(arrayAdapter);
}
}
更新玩弄后,我发现了这种情况的发生,因为文本拆分为2行(使用<br>
或\n
):
box.setText(Html.fromHtml("<b>Foo</b><br><small>Bar</small>"));
box.setText("Foo \n Bar");
当我删除<br>
或\n
时,TextView
框保留其大小即
但是我还没有解决方案。接受建议。
如果将填充放入形状中,该怎么办? –
试过了。同样的结果,但... – armandino
你可以发布一些更多的代码,并且还提到你测试过的设备吗? –