【问题标题】:Android List View Items AlignmentAndroid列表视图项目对齐
【发布时间】:2012-10-30 07:29:30
【问题描述】:

我有一个列表视图,可以在其中动态添加项目。我希望某些项目(我选择的)应与左侧对齐,而某些与右侧对齐。 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);

            }

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

【问题讨论】:

    标签: android listview


    【解决方案1】:
    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);
        ....
    

    【讨论】:

      【解决方案2】:

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

      您可以左右对齐 Cells 中的项目,例如在 Adapters getView 方法中将重力设置为左右。

      【讨论】:

      • 好的,让我检查一下重力问题。完成后会通知您
      • 我无法设置重力。我已经编辑了我的代码来向你展示重力问题。请看一看。
      【解决方案3】:

      使用以下。

      adapter.notifyDataSetChanged();
      

      然后

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

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

      例如:-

      textview1.setGravity(Gravity.RIGHT);
      

      【讨论】:

      • 我无法设置重力。我已经编辑了我的代码来向你展示重力问题。请看一看。
      • holder.mtvMessage.setGravity(Gravity.LEFT);正确的任何一个不工作?还是两者都没有效果?
      • 我已经完成了解决方案。制作了另一个布局并在其他条件下对其进行了充气
      • 知道的请看一下。 stackoverflow.com/questions/13135823/…
      猜你喜欢
      • 2014-02-18
      • 1970-01-01
      • 2014-05-19
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2023-03-31
      • 2014-12-14
      相关资源
      最近更新 更多