我有這樣的LinearLayout是一個RelativeLayout的的孩子除其他事項外一個ListView一起:如何在第一次繪製時以編程方式顯示佈局佈局?
<LinearLayout
android:id="@+id/color_bar"
android:layout_alignParentBottom="true"
android:layout_weight="1"
android:layout_width="match_parent"
android:layout_height="16dp"
android:padding="0dp"
android:orientation="horizontal"
>
<TextView
android:id="@+id/space_used_bar"
android:layout_width="wrap_content"
android:layout_height="match_parent"
android:background="#006688"
android:padding="0dp"
/>
<TextView
android:id="@+id/space_free_bar"
android:layout_width="wrap_content"
android:layout_height="match_parent"
android:background="#444444"
android:padding="0dp"
/>
</LinearLayout>
我不打算把這些TextViews任何文字;他們只是在那裏爲他們的背景顏色值。我想以編程方式設置這兩個TextView的寬度,我可以這樣做,但問題是第一次顯示LinearLayout時,它沒有繪製。它沒有大小,我也看不到其中包含的TextViews。當用戶幾乎做了任何事情(例如鎖定屏幕,按主頁按鈕,單擊列表項目,選擇選項項目等)TextViews正常顯示。只是在活動打開的第一時刻,TextViews和Layout並沒有顯示出來。有誰知道這個問題可能是什麼?
P.S.我已經嘗試在LinearLayout以及各個TextViews上調用invalidate。
編輯:這裏是回調
@Override
public void onCreate(Bundle savedInstanceState)
{
//Log.d(TAG, "onCreate()");
super.onCreate(savedInstanceState);
setContentView(R.layout.browser);
topMenu = getActionBar();
lv = (ListView) findViewById(R.id.file_list);
spaceUsedBar = (TextView) findViewById(R.id.space_used_bar);
spaceFreeBar = (TextView) findViewById(R.id.space_free_bar);
spaceUsed = (TextView) findViewById(R.id.space_used);
spaceFree = (TextView) findViewById(R.id.space_free);
colorBar = (LinearLayout) findViewById(R.id.color_bar);
stat = new StatFs(Environment.getExternalStorageDirectory().getPath());
if (savedInstanceState == null)
{
if (Environment.getExternalStorageState().equals(Environment.MEDIA_MOUNTED))
currentDirectory = externalStorageDirectory;
else
{
currentDirectory = new File(ROOT_DIR);
Toast t = Toast.makeText(c, R.string.not_mounted, Toast.LENGTH_SHORT);
t.show();
}
}
else
{
currentDirectory = new File(savedInstanceState.getString("savedPath"));
int savedPosition = savedInstanceState.getInt("savedPosition");
int savedListTop = savedInstanceState.getInt("savedListTop");
if (savedPosition >= 0)
lv.setSelectionFromTop(savedPosition, savedListTop);
}
}
@Override
public void onStart()
{
//Log.d(TAG, "onStart()");
super.onStart();
lv.setOnItemClickListener(this);
lv.setMultiChoiceModeListener(this);
browseTo(currentDirectory);
}
@Override
public void onResume()
{
//Log.d(TAG, "onResume()");
super.onResume();
}
是的,這是讓我感到困惑的部分。我經歷了所有的代碼之間發生的時間,直到他們沒有出現,而且這似乎完全是任意的。我會很快發佈代碼。 –