android之坑

1,centerInParent不居中

改成LinerLayout也没卵用,然后在最外层加了一个RelativeLayout,成功居中

<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="match_parent"
    android:layout_height="match_parent">
    <RelativeLayout
        android:id="@+id/rl"
        android:layout_width="66dp"
        android:layout_height="96dp"
        android:orientation="horizontal"
        android:background="@color/white">


        <ImageView
            android:id="@+id/iv"
            android:layout_width="50dp"
            android:layout_height="50dp"
            android:layout_centerInParent="true"
            />
    </RelativeLayout>



</RelativeLayout>

2,获取屏幕宽度无效:'getWidth()' is deprecated

参考https://blog.csdn.net/xgangzai/article/details/71427882

因为getWindowManager()这个方法是在类Activity中的,如果你自己编写的类不是继承于类Activity,那么必然在这个类中书写代码就不能用到getWindowManager()这个方法。所以当你自己编写的类不是继承于类Activity,那么就只能应用第二种方法通过Resources获取获取手机屏幕的大小。

3,使用getResources()还是不能获得屏幕宽度

原因:screenWidth初始化放错了位置

private void init(Context context) {
        mContext = context;
        
        DisplayMetrics dm2 = getResources().getDisplayMetrics();
        screenWidth=dm2.widthPixels;
        mData = getData();
        hlv = (HorizontalListView)findViewById(R.id.hlv);
        myAdapter = new HorizontalListViewAdapter(context,screenWidth,mData);
        hlv.setAdapter(myAdapter);

4,horizontalListView移植到现有project咋移?

item_listview,adpter.java,horizontallistview.java直接copy进去

原来的horizontallistview.xml放入植入的xml中

原来的main activity放入植入xml对应的java文件,去掉oncreate,不需要重载。如上图。

5,Java.lang.NullPointerException: Attempt to write ……on a null object reference

报错地点在adpter的这句:

        layoutParams.width = (int) (screenWidth / 5.5);

上下文是这样的:

//        计算每个子布局的宽度
        RelativeLayout.LayoutParams layoutParams = (RelativeLayout.LayoutParams) holder.rl.getLayoutParams();
        layoutParams.width = (int) (screenWidth / 5.5);
        layoutParams.addRule(RelativeLayout.CENTER_IN_PARENT);
        holder.rl.setLayoutParams(layoutParams);

空指针问题,

要不就是layoutParams没有得到rl的布局参数,

要不就是screenWidth是空的,

我先把screenwidth设置成788,发现可以运行出来,那就是问题2:获得屏幕宽度出得问题。

然后又不行了

我又用断点看了一下,发现layoutParams是null,那就是没获得rl的布局参数,所以回归问题1,布局有问题,所以我在原有布局基础上加了Relative Layout。

 

6,item(我设置黑色背景)加载不出来,只能看到horizontallistview(我设置红色背景)(忘截图了……

首先可以确定horizontallistview.java没有错误,然后去找adpter和现在的main activity的错误

因为之前写好的hlv project就是获取屏幕出得问题,所以我把所有screenWidth设置成788(设定成定量),然后又把adapter中动态设置布局参数那部分注释掉,然后发现可以运行了,所有问题出在问题2.

 

AS,再也不想搞这个东西了,

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值