Android layout_weight layout_width ,Listview单行特定textview省略

来源:互联网 发布:流量劫持 sql注入 编辑:程序博客网 时间:2024/05/16 17:29

这里讲两个问题:

1 如何实现多个 TextView 在同一行,当长度太长时,选择省略其中的某一个

2 当layout_weight 设置后是否需要设置layout_width 

先上效果图:

这里需要省略第一个字串。

<?xml version="1.0" encoding="utf-8"?><LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"    android:orientation="horizontal"    android:layout_width="match_parent"    android:layout_height="80dp"    android:gravity="center"    style="@style/single_setting_line_style"    android:baselineAligned="false">    <LinearLayout        android:layout_width="0dp"        android:layout_height="wrap_content"        android:gravity="center"        android:layout_weight="1"        android:orientation="horizontal"        android:layout_marginLeft="@dimen/list_item_padding_left">        <ImageView            android:id="@+id/avatar_watch_contact"            android:layout_width="wrap_content"            android:layout_height="wrap_content" />        <LinearLayout            android:layout_width="0dp"            android:layout_height="wrap_content"            android:orientation="vertical"            android:layout_marginLeft="@dimen/list_item_padding_left"            android:layout_weight="1">            <LinearLayout                android:layout_width="wrap_content"                android:layout_height="wrap_content"                android:orientation="horizontal"                android:gravity="center_vertical">                <TextView                    android:id="@+id/name_watch_contact"                    android:layout_width="wrap_content"                    android:layout_height="wrap_content"                    android:layout_weight="1"                    android:text="father"                    android:textSize="@dimen/title_text_size"                    android:ellipsize="end"                    android:singleLine="true"                    android:textColor="@color/text_color_list_property_value"/>                <TextView                    android:id="@+id/me_watch_contact"                    android:layout_width="wrap_content"                    android:layout_height="wrap_content"                    android:textColor="@color/grey"                    android:textSize="@dimen/value_text_size"                    android:text="@string/me_text_contact_activity"/>                <TextView                    android:id="@+id/admin_watch_contact"                    android:layout_width="wrap_content"                    android:layout_height="wrap_content"                    android:textColor="@color/text_color_light_blue"                    android:textSize="@dimen/value_text_size"                    android:text="@string/admin_text_contact_activity"/>                <ImageView                    android:id="@+id/is_bind_user"                    android:layout_width="wrap_content"                    android:layout_height="wrap_content"                    android:layout_marginLeft="5dp"                    android:layout_marginRight="5dp"                    android:src="@drawable/icon_lianjie"/>            </LinearLayout>            <LinearLayout                android:layout_width="wrap_content"                android:layout_height="wrap_content"                android:layout_marginTop="5dp">                <TextView                    android:id="@+id/phone_watch_contact"                    android:layout_width="wrap_content"                    android:layout_height="wrap_content"                    android:textSize="@dimen/value_text_size"                    android:textColor="@color/text_color_list_property_value"                    android:text="12345678900"/>            </LinearLayout>        </LinearLayout>    </LinearLayout>    <LinearLayout        android:layout_width="wrap_content"        android:layout_height="80dp"        android:gravity="center_vertical"        android:paddingRight="@dimen/list_item_padding_right">        <ImageView            android:id="@+id/skill_watch_contact"            android:layout_width="wrap_content"            android:layout_height="wrap_content"            android:background="@drawable/skill_right"/>    </LinearLayout></LinearLayout>

java代码:

@Overridepublic View getView(final int position, View convertView, ViewGroup parent) {    WatchContact watchContact = mList.get(position);    Holder holder;    if(convertView == null) {        holder = new Holder();        convertView = mInflater.inflate(R.layout.item_watch_contact, null);        holder.skill = (ImageView) convertView.findViewById(R.id.skill_watch_contact);        holder.avatar = (ImageView) convertView.findViewById(R.id.avatar_watch_contact);        holder.name = (TextView) convertView.findViewById(R.id.name_watch_contact);        holder.phone = (TextView) convertView.findViewById(R.id.phone_watch_contact);        holder.me = (TextView) convertView.findViewById(R.id.me_watch_contact);        holder.admin = (TextView) convertView.findViewById(R.id.admin_watch_contact);        holder.isBIndView = (ImageView) convertView.findViewById(R.id.is_bind_user);        convertView.setTag(holder);    } else {        holder = (Holder)convertView.getTag();    }    convertView.setOnClickListener(new View.OnClickListener() {        @Override        public void onClick(View v) {            startContactDetailsActivity(mList.get(position), VIEW);        }    });    holder.avatar.setImageResource(            getHeadDrawableId(watchContact.getAvatarId()));    holder.phone.setText(watchContact.getPhone());    holder.name.setText(watchContact.getName());    if(watchContact.getPhone().equals(AccountManager.getInstance().getUser().getPhone())) {        holder.me.setVisibility(View.VISIBLE);    }else {        holder.me.setVisibility(View.GONE);    }    int  type = watchContact.getType();    switch(type){        case WatchContact.ContactType.TYPE_ADMIN:            holder.isBIndView.setVisibility(View.VISIBLE);            holder.admin.setVisibility(View.VISIBLE);            break;        case WatchContact.ContactType.TYPE_BIND_USER:            holder.isBIndView.setVisibility(View.VISIBLE);            holder.admin.setVisibility(View.GONE);            break;        default:            holder.isBIndView.setVisibility(View.GONE);            holder.admin.setVisibility(View.GONE);    }    return convertView;}class Holder {    ImageView avatar;    ImageView skill;    ImageView isBIndView;    TextView name;    TextView phone;    TextView me;    TextView admin;}

如果仅仅是一行,那问题还好,但是如果要在listview里面,可能要麻烦一点了。动态的刷新可能会让界面不如你想的那样变化。

关于第二个问题,如果按照Android推荐的layout_weight 设置后 设置layout_width = 0dp,当listview item 过多时,显示会有问题,设置为wrap_content时则没有问题。

按照比例来时,刷新是有问题的。

0 0