私はTextView
<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
ボックスはそのサイズを維持します。
ただし、これに対する解決策はまだありません。提案を受け付けます。