android textview showcaseview

android - Escaparate Ver la gravedad del texto



textview showcaseview (1)

Acabo de excavar en el código fuente de ShowcaseView y parece que no hay forma de incorporar la posición del texto. Entonces agregué mi propia modificación a la biblioteca. Aquí están los cambios que he hecho:

En la clase ShowcaseView agregó estos campos:

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

Luego, en la clase Builder que es clase interna en la clase ShowcaseView , agregue estos métodos:

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; }

Después de eso, agrega este método a la clase TextDrawer :

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

y al final cambie el método onPreDraw en ShowcaseView para que se vea así:

@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; }

Ahora debería crear ShowcaseView así:

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();

¡Disfrutar!

¿Hay alguna manera de establecer la posición del título y el mensaje en una vista de vitrina? Veo que la biblioteca usa una función para encontrar la mejor posición, pero quiero anularla.