博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
android 查看内容详细信息无须页面跳转解决方案及setLayoutParams注意事项
阅读量:6615 次
发布时间:2019-06-25

本文共 2514 字,大约阅读时间需要 8 分钟。

  hot3.png

    android开发中肯定会牵扯到一些查看数据的详细信息操作,一般的都做是从列表页面选择跳转到详细信息页面
    
    但是,
移动开发的原则是,页面尽量不要显示不必要的信息,不要太多跳转,不要太多的弹框等等
    
    首先来看我们要实现的效果
       
    =====>     
    
    
    下面来看看它的原理,点击数据时,实际上是将放数据的那一层视图的布局参数改变,所以
    item.xml
   
    
    MainActivity.java
   
public class MainActivity extends Activity{    private boolean isShow = false;    private String str = "开源中国Android开发专区开源中国Android开发专区开源中国Android开发专区开源中国Android开发专区开源中国Android开发专区开源中国Android开发专区开源中国";    @Override    protected void onCreate(Bundle savedInstanceState)    {        super.onCreate(savedInstanceState);        requestWindowFeature(Window.FEATURE_NO_TITLE);        ArrayAdapter adapter = new ArrayAdapter(this, R.layout.item, R.id.tv, new String[] { "类似新闻摘要" });        ListView listview = new ListView(this);        listview.setAdapter(adapter);        setContentView(listview);        listview.setOnItemClickListener(new OnItemClickListener()        {            @Override            public void onItemClick(AdapterView
parent, View view, int position, long id) { final TextView tv = (TextView) view.findViewById(R.id.tv); final LinearLayout layout = (LinearLayout) view.findViewById(R.id.layout); layout.setOnClickListener(new OnClickListener() { @Override public void onClick(View v) { if (!isShow) { tv.setText("类似新闻摘要"); layout.setLayoutParams(new AbsListView.LayoutParams(AbsListView.LayoutParams.MATCH_PARENT, 67));// 注意:这里的单位变成了px,其中px } else { tv.setText(str); layout.setLayoutParams(new AbsListView.LayoutParams(AbsListView.LayoutParams.MATCH_PARENT, AbsListView.LayoutParams.WRAP_CONTENT)); } isShow = !isShow; } }); } }); }}
 这里要注意两点:
 第一:已经在注释里说了,new LayoutParams(width,height)中的参数单位要注意转换;
 第二:也是很重要的一点,以前都没意识到,就是在layout.setLayoutParams(layoutParams)的时候,其中的layoutParams
一定是其组件(在这里是layout)的父视图的布局方式,所以
 这里是new AbsListView.LayoutParams(AbsListView.LayoutParams.MATCH_PARENT, AbsListView.LayoutParams.WRAP_CONTENT),如果你是在LinearLayout里面加一个TextView,那么
 就是new LinearLayout.LayoutParams(LinearLayout.LayoutParams.MATCH_PARENT, LinearLayout.LayoutParams.WRAP_CONTENT)了,这点以前还没意识到,这里也提醒自己要刨根问
 到底,知其然,还要知其所以然。
   
我的博客其它文章列表
   

转载于:https://my.oschina.net/helu/blog/143560

你可能感兴趣的文章
笔记本电脑同时连接无线网络(互联网)和有线网络(内网)的方法
查看>>
eclipse离线插件
查看>>
BOM导致的Build failed in Jenkins with error MSB4025
查看>>
渣打迷你编程马拉松(Mini Code Marathon)小记
查看>>
mac 下添加mysql开机启动
查看>>
末日生存者的信条
查看>>
jquery mobile 定时器代码
查看>>
牛人整理的Django资源大全(转载)
查看>>
Android4.0 WiFi 源码解读
查看>>
反序列化坑
查看>>
dubbo源码解读系列之一dubbo项目组成
查看>>
linux中seq命令用法
查看>>
arnold resouces
查看>>
凭兴趣求职80%会失败,为什么
查看>>
URI的常用使用场景
查看>>
详解网络流量监控
查看>>
Ubuntu 修改 IP/DNS
查看>>
Java API 学习 (java 、javax 、org )的理解 (1)
查看>>
mysql error:Lock wait timeout exceeded
查看>>
将乱码后的中文作为key放入redis后,取值时找不到key该怎么弄
查看>>