1

我有一个列表视图,可以在其中动态添加项目。我希望某些项目(我选择的)应与左侧对齐,而某些与右侧对齐。Android的ListView可以做到这一点吗?

//适配器

if (convertView == null) {
                holder = new EventViewHolder();
                if (type == 1) {
                    convertView = inflater.inflate(
                            R.layout.multi_line_list_item, null);
                    holder.mtvMessage = (TextView) convertView
                    .findViewById(R.id.tvMessage);
                    holder.mtvMessage.setGravity(Gravity.LEFT);
                    holder.mtvMessage.setBackgroundResource(R.drawable.chatbluebox);
                    convertView.setTag(holder);
                }else{
                    convertView = inflater.inflate(
                            R.layout.multi_line_list_item, null);
                    holder.mtvMessage = (TextView) convertView
                    .findViewById(R.id.tvMessage);
                    holder.mtvMessage.setGravity(Gravity.RIGHT);
                    holder.mtvMessage.setBackgroundResource(R.drawable.chatgreenbox);
                    convertView.setTag(holder);

            }

请让我知道是否可以完成并建议我一个好的解决方案?

4

3 回答 3

5
android:stackFromBottom="true"
android:transcriptMode="alwaysScroll"

在您的 listView xml 条目中添加这些行......

对于左右对齐,维护两个布局 xmls 一个右对齐,另一个左对齐(无论你想要什么),然后在 listAdapter 的 getView() 方法中设置一些条件并根据需要膨胀这些 xml

if (convertView == null)
    if(some condition)
        convertView = mInflater.inflate(R.layout.rightxml, null);
    else
        convertView = mInflater.inflate(R.layout.leftxml, null);
    ....
于 2012-10-30T07:36:04.620 回答
2

查看 ListView 模式stackFromBottomtranscriptMode ,它们可能会为您完成大部分工作。

要左右对齐单元格中的项目,您可以,例如在适配器 getView 方法中将重力设置为左右。

于 2012-10-30T07:34:33.863 回答
1

使用以下。

adapter.notifyDataSetChanged();

进而

listView.setSelection(items.size()-1);

对于重力您需要在您的getview()方法中动态设置重力。

例如 :-

textview1.setGravity(Gravity.RIGHT);
于 2012-10-30T07:35:19.510 回答