android 组件更新内容之后的刷新小结
2013-11-28 09:39
531 查看
在android开发过程中,当我们对一个TextView更新内容之后,并且会改变界面布局的高度的时候。比如:
1.布局文件
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:orientation="vertical" >
<RelativeLayout
android:id="@+id/author_lay"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:background="@drawable/tab_item_bg"
android:paddingBottom="5dip"
>
<TextView
android:id="@+id/author_name_tv"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:layout_marginBottom="5dip"
android:layout_marginLeft="5dip"
android:layout_marginRight="5dip"
android:layout_marginTop="5dip"
android:singleLine="true"
android:textColor="@color/item_name"
android:textSize="16dip" />
<TextView
android:id="@+id/author_des_tv"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:layout_below="@id/author_name_tv"
android:layout_margin="5dip"
android:textColor="@color/black"
android:textSize="16dip" />
</RelativeLayout>
<ImageView
android:id="@+id/author_line"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:background="@drawable/line" />
<ListView
android:id="@+id/author_works_lv"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:cacheColorHint="@color/transparent"
android:divider="@drawable/line"
android:fadeScrollbars="true"
android:fadingEdge="none"
android:scrollbarThumbVertical="@drawable/scroll" />
</LinearLayout>
2. 关键代码
TextView authorDesTV;
authorDesTV = (TextView) findViewById(R.id.author_des_tv);
authorDesTV.setText(getString(R.string.author_description, authorDes));
//设置Tag,根据Tag的值来判断authorDesTV是否展开
authorDesTV.setTag(false);
authorDesTV.setMaxLines(4);
1)通过view的requestLayout()方法来刷新界面
authorDesTV.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View v) {
boolean isExpend = (Boolean) authorDesTV.getTag();
if (isExpend) {
authorDesTV.setTag(false);
authorDesTV.setMaxLines(4);
authorDesTV.requestLayout();
} else {
authorDesTV.setTag(true);
authorDesTV.setMaxLines(20);
authorDesTV.setEllipsize(null);
}
}
});
2)通过view的invalidate()方法来刷新界面
authorDesTV.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View v) {
boolean isExpend = (Boolean) authorDesTV.getTag();
if (isExpend) {
authorDesTV.setTag(false);
authorDesTV.setMaxLines(4);
authorDesTV.invalidate();
} else {
authorDesTV.setTag(true);
authorDesTV.setMaxLines(20);
authorDesTV.setEllipsize(null);
}
}
});
3)通过ListView的scrollBy()方法来刷新界面
authorDesTV.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View v) {
boolean isExpend = (Boolean) authorDesTV.getTag();
if (isExpend) {
authorDesTV.setTag(false);
authorDesTV.setMaxLines(4);
authorWorksLV.scrollBy(0, 1);
} else {
authorDesTV.setTag(true);
authorDesTV.setMaxLines(20);
authorDesTV.setEllipsize(null);
}
}
});
3.第一种方式是通过重新布局来请求界面刷新;
第二种方式是view的刷新方法;
第三种方式是间接通过重新布局的方式来请求界面刷新。
4.最后如果通过以上三种方式均不能够实现界面刷新,那就要考虑尝试以下方式:
1)对RelativeLayout添加一个android:clipChildren属性;
<RelativeLayout
android:id="@+id/author_lay"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:background="@drawable/tab_item_bg_hover"
android:paddingBottom="5dip"
android:clipChildren="true"
>
2)对listview添加一个背景android:background="@drawable/window_bg"。
<ListView
android:id="@+id/author_works_lv"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:background="@drawable/window_bg"
android:cacheColorHint="@color/transparent"
android:divider="@drawable/line"
android:fadeScrollbars="true"
android:fadingEdge="none"
android:scrollbarThumbVertical="@drawable/scroll" />
1.布局文件
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:orientation="vertical" >
<RelativeLayout
android:id="@+id/author_lay"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:background="@drawable/tab_item_bg"
android:paddingBottom="5dip"
>
<TextView
android:id="@+id/author_name_tv"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:layout_marginBottom="5dip"
android:layout_marginLeft="5dip"
android:layout_marginRight="5dip"
android:layout_marginTop="5dip"
android:singleLine="true"
android:textColor="@color/item_name"
android:textSize="16dip" />
<TextView
android:id="@+id/author_des_tv"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:layout_below="@id/author_name_tv"
android:layout_margin="5dip"
android:textColor="@color/black"
android:textSize="16dip" />
</RelativeLayout>
<ImageView
android:id="@+id/author_line"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:background="@drawable/line" />
<ListView
android:id="@+id/author_works_lv"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:cacheColorHint="@color/transparent"
android:divider="@drawable/line"
android:fadeScrollbars="true"
android:fadingEdge="none"
android:scrollbarThumbVertical="@drawable/scroll" />
</LinearLayout>
2. 关键代码
TextView authorDesTV;
authorDesTV = (TextView) findViewById(R.id.author_des_tv);
authorDesTV.setText(getString(R.string.author_description, authorDes));
//设置Tag,根据Tag的值来判断authorDesTV是否展开
authorDesTV.setTag(false);
authorDesTV.setMaxLines(4);
1)通过view的requestLayout()方法来刷新界面
authorDesTV.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View v) {
boolean isExpend = (Boolean) authorDesTV.getTag();
if (isExpend) {
authorDesTV.setTag(false);
authorDesTV.setMaxLines(4);
authorDesTV.requestLayout();
} else {
authorDesTV.setTag(true);
authorDesTV.setMaxLines(20);
authorDesTV.setEllipsize(null);
}
}
});
2)通过view的invalidate()方法来刷新界面
authorDesTV.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View v) {
boolean isExpend = (Boolean) authorDesTV.getTag();
if (isExpend) {
authorDesTV.setTag(false);
authorDesTV.setMaxLines(4);
authorDesTV.invalidate();
} else {
authorDesTV.setTag(true);
authorDesTV.setMaxLines(20);
authorDesTV.setEllipsize(null);
}
}
});
3)通过ListView的scrollBy()方法来刷新界面
authorDesTV.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View v) {
boolean isExpend = (Boolean) authorDesTV.getTag();
if (isExpend) {
authorDesTV.setTag(false);
authorDesTV.setMaxLines(4);
authorWorksLV.scrollBy(0, 1);
} else {
authorDesTV.setTag(true);
authorDesTV.setMaxLines(20);
authorDesTV.setEllipsize(null);
}
}
});
3.第一种方式是通过重新布局来请求界面刷新;
第二种方式是view的刷新方法;
第三种方式是间接通过重新布局的方式来请求界面刷新。
4.最后如果通过以上三种方式均不能够实现界面刷新,那就要考虑尝试以下方式:
1)对RelativeLayout添加一个android:clipChildren属性;
<RelativeLayout
android:id="@+id/author_lay"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:background="@drawable/tab_item_bg_hover"
android:paddingBottom="5dip"
android:clipChildren="true"
>
2)对listview添加一个背景android:background="@drawable/window_bg"。
<ListView
android:id="@+id/author_works_lv"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:background="@drawable/window_bg"
android:cacheColorHint="@color/transparent"
android:divider="@drawable/line"
android:fadeScrollbars="true"
android:fadingEdge="none"
android:scrollbarThumbVertical="@drawable/scroll" />
相关文章推荐
- Jquery Mobile中组件内容更新后的刷新办法
- Android应用程序组件Content Provider的共享数据更新通知机制分析
- Android四大组件ContentProvider 内容提供者
- 更新 Android 5.x (Lollipop) 之后的 framework/services.jar
- Android中设置ListView内容刷新问题
- Android组件----内容提供器Content Provider
- Android 架构组件简单小结
- Android四大组件之内容提供器
- 解决android 更新之后 没有选择启动或完成按钮
- 「微信小程序免费辅导教程」24,基础内容组件icon的使用探索与7月26日微信公众平台的更新解读
- Android重要组件ListView的技术使用,研究。(持续更新...)
- Android 组件系列(1):自动完成输入内容的组件(AutoCompleteTextView )
- android UI(内容)更新的方法之handler、runOnUiThread()
- Android四大组件-内容提供者
- 更新Android&nbsp;SDK之后Eclipse…
- iOS实战-头像更新上传之后,UI不刷新
- Android应用程序组件Content Provider的共享数据更新通知机制分析
- Android应用程序组件Content Provider的共享数据更新通知机制分析
- Android六大布局使用小结(2016/1/16更新)
- Android自己定义组件之日历控件-精美日历实现(内容、样式可扩展)