我想添加新的textViews到我的自定義線性佈局。但在繪製線性佈局之前,我想檢查它是否仍然適合,而不與右側的按鈕重疊,如果它重疊,我想在繪製它之前剪切textView中的文本。如何檢查動態視圖是否與另一個視圖重疊?
我的佈局
<RelativeLayout
android:layout_width="fill_parent"
android:layout_height="60dp" >
<ImageButton
android:id="@+id/b_settings"
android:layout_width="50dp"
android:layout_height="44dp"
android:layout_alignParentRight="true"
android:layout_margin="0dp"
android:src="@drawable/watch_settings2x" />
<Button
android:id="@+id/b_test"
android:layout_width="50dp"
android:layout_height="44dp"
android:layout_toLeftOf="@id/b_settings"
/>
<com.client.views.Breadcrump
android:id="@+id/ll_breadcrump"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_alignParentLeft="true"
android:orientation="horizontal" />
</RelativeLayout>
我的流程是這樣的,首先我添加了一個新的TextView到我的自定義視圖。
this.addView(TextView, position);
我已實現了以下GlobalLayoutListener
自定義視圖中繪製之前被稱爲,但寬度是媒體鏈接可供選擇:
@Override
public void onGlobalLayout() {
cutBreadcrump();
}
然後我先拿到的可用空間我Breadcrump(自定義視圖)
int fragmentWidth = getView().getWidth();
int widthButtons = mIBSettings.getWidth() + mBTest.getWidth();
int spaceBreadcrump = fragmentWidth - widthButtons;
接下來,我從我的新添加的TextView切割個字符作爲和檢查新寬度
CharSequence text = textView.get(0).getText();
text = text.subSequence(0, text.length() - 1);
textView.get(0).setText(text);
但這是我的問題。改變文字後寬度不會改變。
mElements.get(0).getWidth();
我也試過paint.measureText(string);
方法讓我的TextView的寬度,但它總是多到長。也許這種方法確實不同的東西,然後我的預期......
所以我的問題是在短如何改變其文本繪製視圖
使用'view.getLocationInWindow(int [] coords)'應該讓你看看這些視圖是否重疊。 – Luksprog 2013-05-07 11:33:22
在屏幕上繪製視圖之前,是否可以更好地檢查它? – AdrianoCelentano 2013-05-07 12:28:05
你不能這樣做,如果視圖還沒有繪製在屏幕上沒有座標。當您添加視圖時,會在視圖中發佈一個'Runnable',您將在其中使用上述方法檢索座標。 – Luksprog 2013-05-07 12:35:12