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,再也不想搞这个东西了,