2012-12-10 74 views
2

我有一个TextView的Android - 视图失去填充上的ListView滚动

<TextView 
    android:background="@drawable/myshape" 
    android:padding="5dp" 
    ... /> 

具有以下形状设置为背景:

<shape> 
    <corners android:radius="4dp" /> 
    <solid android:color="#FFFAD6" /> 
</shape> 

TextViewListView内显示。问题在于滚动时填充已丢失。当列表视图呈现第一它看起来不错:

enter image description here

当列表滚动来回填充丢失:

enter image description here

我缺少什么?

编辑下面的代码:

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框保留其大小即

但是我还没有解决方案。接受建议。

+0

如果将填充放入形状中,该怎么办? –

+0

试过了。同样的结果,但... – armandino

+0

你可以发布一些更多的代码,并且还提到你测试过的设备吗? –

回答

1

我也面临类似的行为。当在视图列表适配器中回收视图时,它看起来像布局参数会丢失。我已经在getView()我的适配器的方法中设置了布局参数。您可以在getView()中尝试setPadding(int left,int top,int right,int bottom)并查看它是否解决了问题。

+0

谢谢。我会试一试。 – armandino

+0

不...没有工作。 – armandino