2

Итак, у меня есть два текстовых элемента в RelativeLayout в моем XML-файле. Когда они будут локализованы на разных языках, будет шанс, что эти две точки будут пересекаться друг с другом.Как обнаружить перекрытие и сброс местоположений текстовых просмотров в Android?

В этом случае я хочу поместить их в две строки вместо одной строки. Как обнаружить перекрытие и сбросить свою позицию так, чтобы он был поверх другого в java-коде?

+1

Вы можете правильно настроить свой макет для внесения изменений, можете ли вы разместить свой макет xml? –

+0

Возможный дубликат [Android - Как узнать, отображается ли наложение другого вида в RelativeLayout] (http://stackoverflow.com/questions/24047644/android-how-to-know-if-a-view-overlay-another- view-in-relativelayout) – petey

+0

У меня такая же проблема, вы хотите исключить (GONE) представление, если они накладываются, программно. Если я найду ответ, я отправлю его на этот вопрос. Я подозреваю, что это может быть в прослушивателях ViewTreeObserver. – JPM

ответ

0

Просто разместите свой макет в языковой специальной папке.

Ваш стандартный макет в res/layout

еще в res/layout-ar (например, для арабского)

+0

Я хочу обнаружить, что два вида накладываются в Java программно, потому что idk, язык которых вызовет перекрытие – user3720918

+1

Быстрый поиск: http://stackoverflow.com/a/24047970/773480 –

1

Я сделал это с LinearLayout и используя TextView в Автоперенос функцию IWAS в состоянии обнаружить, если TextView завернуты. Используя ViewTreeObserver и просматривая количество строк для текстового представления, я программно устанавливаю представление в Gone.

final TextView text = findViewById(R.id.textview1); 
text.getViewTreeObserver().addOnGlobalLayoutListener(
      new ViewTreeObserver.OnGlobalLayoutListener() { 
    @Override 
    public void onGlobalLayout() { 
     int lineCount = text.getLineCount(); 
     Log.d(this, "LineCount = " + lineCount); 
     if (lineCount > 1) { 
      text.setVisibility(View.GONE); 
     } 
     getViewTreeObserver().removeGlobalOnLayoutListener(this); 
    } 
}); 

Просто чтобы убедиться, что ваши макеты не ellipsize или что вы установите SingleLine или MaxLines к истинным или 1. Я поставил Макс линию на одной TextView Я хочу пошел в 2 так, что он будет завернуть, если он не подойдет.