2013-05-07 82 views
0

我想添加新的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的宽度,但它总是多到长。也许这种方法确实不同的东西,然后我的预期......

所以我的问题是在短如何改变其文本绘制视图

+0

使用'view.getLocationInWindow(int [] coords)'应该让你看看这些视图是否重叠。 – Luksprog 2013-05-07 11:33:22

+0

在屏幕上绘制视图之前,是否可以更好地检查它? – AdrianoCelentano 2013-05-07 12:28:05

+0

你不能这样做,如果视图还没有绘制在屏幕上没有坐标。当您添加视图时,会在视图中发布一个'Runnable',您将在其中使用上述方法检索坐标。 – Luksprog 2013-05-07 12:35:12

回答

0

确定之后才得到一个视图的新宽度我终于做到了像这个我覆盖了我的观点的onLayout方法。所以当这个方法被调用时,它会保存我视图的静态属性中的可用空间。 当我添加一个新的TextView我检查与此帮助的所有字符串的总和: measure text return pixels based

和我剪我的琴弦有一点个人algorythm直到所有TextViews适合的空间。之后我画了TextViews。

相关问题