[英]How to refresh the linear layout programmatically
我的應用程序有一個LinearLayout
, LinearLayout
由 3 個Linearlayouts
組成,並且每個線性布局都有一個Relativelayout
和一個線性布局(最初這些線性布局的可見性消失了)。 如果單擊相對布局,則將顯示相關的線性布局。 但是點擊相對布局后如何刷新整個線性布局。
代碼:
private OnClickListener exit2Listener = new OnClickListener()
{
public void onClick(View v)
{
if(!exit2status)
{
if(RB_Constant.upcomingexits_obj.response.size() > 1)
{
if(RB_Constant.upcomingexits_obj.response.get(1).listRestaurants.size() > 0)
{
// Create the views on the fly instead of using the ListView
UpcomingResultsListViewAdapter2 rbupcadapter2 = new UpcomingResultsListViewAdapter2(RB_UpcomingExits.this);
int numItems2 = 0;
if(RB_Constant.upcomingexits_obj.response.get(1).listRestaurants.size() > 0)
{
numItems2 = RB_Constant.upcomingexits_obj.response.get(1).listRestaurants.size();
}
//linearLayout2
for(int position=0; position < numItems2; position++)
{
View convertview = null;
convertview = rbupcadapter2.getView(position, convertview, null);
listLayout2.addView(convertview);
}
}
}
else
{
//toastMsg("No results!");
}
listLayout2.setVisibility(View.VISIBLE);
exit2status=true;
if(!exit1status || exit3status || exit4status || exit5status)
{
//System.out.println("exit2 GONE");
listLayout1.setVisibility(View.GONE);
listLayout3.setVisibility(View.GONE);
exit1status = false;
exit3status = false;
}
LLExitDetails.invalidate();
}
else
{
System.out.println("exit2 GONE");
listLayout2.setVisibility(View.GONE);
exit2status = false;
LLExitDetails.invalidate();
}
}
};
檢索包含所有內容的 LinearLayout。 當您需要“刷新”它時,請調用invalidate
。 不過只能在 UI 線程中調用它。 如果您在另一個線程(例如計時器)中調用它,則調用postInvalidate
。 當操作系統准備好調用 View 時,兩者都會導致調用 View 的onDraw
方法。
我也花了很多時間來解決這個問題。 而且我發現了一個簡單的方法,用 3 行代碼刷新 LinearLayout
您必須在 style.xml 中設置透明顏色
<color name="transparent">#00000000</color>
在代碼中只需調用設置背景
LinearLayout ll = (LinearLayout) findViewById(R.id.noteList);
ll.setBackgroundColor(getResources().getColor(R.color.transparent));
ll.invalidate();
如果您有可繪制的后台調用
ll.setBackgroundResource(R.drawable.your_drawable);
要以圖形方式刷新視圖,請使用 invalidate 調用 onDraw() 並重新計算視圖尺寸以及與高度、寬度、邊距和填充相關的任何內容,使用 requestLayout 調用 onMeasure()
linearLayout.removeAllViews();
//The again load the linearlayout view
runLinearLayout();
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.