Витрина Посмотреть текст gravity

Есть ли способ установить положение заголовка и сообщения в представлении витрины? Я вижу, что библиотека использует функцию, чтобы найти лучшую позицию, но я хочу ее переопределить.

Я только что ShowcaseView исходный код ShowcaseView и кажется, что нет способа построить текстовую позицию. Поэтому я добавил свою собственную модификацию в библиотеку. Вот изменения, которые я сделал:

В классе ShowcaseView добавлены следующие поля:

 private boolean hasManualPostion = false; private int xPosition, yPosition, width; 

Затем в классе Builder который является внутренним классом в классе ShowcaseView , добавьте следующие методы:

  public Builder hasManualPosition(boolean hasManualPosition) { showcaseView.hasManualPostion = hasManualPosition; return this; } public Builder xPostion(int xPostion) { showcaseView.xPosition = xPostion; return this; } public Builder yPostion(int yPostion) { showcaseView.yPosition = yPostion; return this; } 

После этого добавьте этот метод в класс TextDrawer :

 public void setTestPostionManually(int xPosition, int yPosition) { mBestTextPosition[0] = xPosition; mBestTextPosition[1] = yPosition; } 

И в конце измените метод onPreDraw в ShowcaseView чтобы он выглядел следующим образом:

  @Override public boolean onPreDraw() { boolean recalculatedCling = showcaseAreaCalculator.calculateShowcaseRect(showcaseX, showcaseY, showcaseDrawer); boolean recalculateText = recalculatedCling || hasAlteredText; if (recalculateText) { textDrawer.calculateTextPosition(getMeasuredWidth(), getMeasuredHeight(), this, shouldCentreText); if (hasManualPostion) { textDrawer.setTestPostionManually(xPosition, yPosition); } } hasAlteredText = false; return true; } 

Теперь вы должны создать ShowcaseView следующим образом:

 sv = new ShowcaseView.Builder(this, true) .setTarget(target) .setContentTitle(R.string.showcase_main_title) .setContentText(R.string.showcase_main_message) .setStyle(R.style.CustomShowcaseTheme2) .setShowcaseEventListener(this) .hasManualPosition(true) .xPostion(0) .yPostion(240) .build(); 

Наслаждайтесь!