我想设置Android中ListView滚动结束时按钮的高度。在更改页脚视图的高度时,在滚动最后一项时结束时崩溃崩溃。在最后一页的末尾,我想设置Button的高度为80,ProgressBar为0. 但问题是ProgressBar高度正确为0但按钮高度没有增加。谢谢。 < / p>
这是我的ListView滚动侦听器代码
footer = ((LayoutInflater) getSystemService(Context.LAYOUT_INFLATER_SERVICE)).inflate(R.layout.prohressbar, listView , false);
rLayout = (RelativeLayout) footer.findViewById(R.id.progressRel);
progressBar = (ProgressBar)footer.findViewById(R.id.progressBar);
btnLoadMore = (Button)footer.findViewById(R.id.btnLoadMore);
btnLoadMore.getLayoutParams().height = 0;
progressBar.getLayoutParams().height = 80;
listView.addFooterView(footer);
listView.setOnScrollListener(new AbsListView.OnScrollListener()
{
private int total;
@Override
public void onScrollStateChanged(AbsListView absListView, int scrollState)
{}
@Override
public void onScroll(AbsListView absListView, int firstItem, int visibleItemCount, final int totalItems)
{
total = firstItem+ visibleItemCount;
Log.e("","total ="+total );
if(totalItems > 0 && total > 0 && total == totalItems)
{
}
}
}, 2000);
}
preLast = total;
}
preLast = total;
Log.e("","preLast="+preLast);
if (pageCount == LocalPages)
{
if(preLast == total)
{
Log.e("", "Go to else conditions --- 2 !!!!!! pageCount=" + pageCount + " LocalPages=" + LocalPages);
progressBar.setVisibility(View.GONE);
// btnLoadMore.setVisibility(View.VISIBLE);
btnLoadMore.getLayoutParams().height = 80;
progressBar.getLayoutParams().height = 0;
}
}
}
}
});
错误:
java.lang.NullPointerException: Attempt to write to field 'int android.view.ViewGroup$LayoutParams.height' on a null object reference
at com.example.tazeen.classnkk.Pagination_Demo$1.onScroll(Pagination_Demo.java:174)
at android.widget.AbsListView.invokeOnItemScrollListener(AbsListView.java:1463)
at android.widget.ListView.layoutChildren(ListView.java:1812)
at android.widget.AbsListView.onLayout(AbsListView.java:2148)
at android.view.View.layout(View.java:16630)
at android.view.ViewGroup.layout(ViewGroup.java:5437)
at android.support.v4.widget.SwipeRefreshLayout.onLayout(SwipeRefreshLayout.java:562)
at android.view.View.layout(View.java:16630)
at android.view.ViewGroup.layout(ViewGroup.java:5437)
at android.widget.RelativeLayout.onLayout(RelativeLayout.java:1079)
at android.view.View.layout(View.java:16630)
at android.view.ViewGroup.layout(ViewGroup.java:5437)
at android.widget.FrameLayout.layoutChildren(FrameLayout.java:336)
at android.widget.FrameLayout.onLayout(FrameLayout.java:273)
at android.view.View.layout(View.java:16630)
at android.view.ViewGroup.layout(ViewGroup.java:5437)
at android.widget.LinearLayout.setChildFrame(LinearLayout.java:1743)
at android.widget.LinearLayout.layoutVertical(LinearLayout.java:1586)
at android.widget.LinearLayout.onLayout(LinearLayout.java:1495)
at android.view.View.layout(View.java:16630)
at android.view.ViewGroup.layout(ViewGroup.java:5437)
at android.widget.FrameLayout.layoutChildren(FrameLayout.java:336)
at android.widget.FrameLayout.onLayout(FrameLayout.java:273)
at com.android.internal.policy.PhoneWindow$DecorView.onLayout(PhoneWindow.java:2678)
at android.view.View.layout(View.java:16630)
at android.view.ViewGroup.layout(ViewGroup.java:5437)
at android.view.ViewRootImpl.performLayout(ViewRootImpl.java:2171)
at android.view.ViewRootImpl.performTraversals(ViewRootImpl.java:1931)
at android.view.ViewRootImpl.doTraversal(ViewRootImpl.java:1107)
at android.view.ViewRootImpl$TraversalRunnable.run(ViewRootImpl.java:6013)
at android.view.Choreographer$CallbackRecord.run(Choreographer.java:858)
at android.view.Choreographer.doCallbacks(Choreographer.java:670)
at android.view.Choreographer.doFrame(Choreographer.java:606)
at android.view.Choreographer$FrameDisplayEventReceiver.run(Choreographer.java:844)
at android.os.Handler.handleCallback(Handler.java:739)
at android.os.Handler.dispatchMessage(Handler.java:95)
at android.os.Looper.loop(Looper.java:148)
at android.app.ActivityThread.main(ActivityThread.java:5417)
at java.lang.reflect.Method.invoke(Native Method)
at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:726)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:616)
答案 0 :(得分:1)
使用此
LinearLayout.LayoutParams linearPrams = new LinearLayout.LayoutParams(80,0);
btnLoadMore.setLayoutParams(linearPrams);
答案 1 :(得分:0)
尝试这样。
LayoutParams params = new LayoutParams(LayoutParam.WRAP_CONTENT, 80);
( import RelativeLayout.LayoutParams )
然后
button.setLayoutParams(params) ;