Dzwonię następujące w konstruktorze mojego widoku niestandardowego:Ustawianie TEXTSIZE w widoku niestandardowym skutkuje ogromnym tekście
private void style(Resources.Theme theme, AttributeSet attrs) {
TypedArray a = theme.obtainStyledAttributes(
attrs,
R.styleable.StackedTextView,
0, 0);
try {
DebugTool.assertTrue(holdr != null, "View holder has not been properly intialized.");
String line1 = a.getString(R.styleable.StackedTextView_line1);
setLine1(line1);
String line2 = a.getString(R.styleable.StackedTextView_line2);
setLine2(line2);
line1Size = a.getDimension(R.styleable.StackedTextView_line1_textSize, 20);
line2Size = a.getDimension(R.styleable.StackedTextView_line2_textSize, 20);
if (line1Size > 0) {
holdr.textLine1.setTextSize(line1Size);
}
if (line2Size > 0) {
holdr.textLine2.setTextSize(line2Size);
}
} finally {
a.recycle();
}
}
to ma ustawić rozmiar tekstu i tekst do 2 pól tekstowych.
Mam również w moim pliku attr.xml oprócz formatów napisów dla treści tekstowej (co działa poprawnie).
<attr name="line1_textSize" format="dimension" />
<attr name="line2_textSize" format="dimension" />
Kiedy używać tego widoku i ustawić rozmiar tekstu przy użyciu wymiaru poprzez XML,
<com.me.app.view.component.StackedTextView
android:id="@+id/overview_total_reviews"
app:line1="40"
app:line2="Rating"
style="@style/OverviewStackedText"
app:line1_textSize="10sp"
app:line2_textSize="12sp"
/>
tekst kończy się znacznie większy niż oczekiwano. Mam tylko ustawienie odpowiednio 10 i 12sp, a rozmiary tekstu są bliższe 30sp.
Czy ktoś może zobaczyć, co robię źle? Czy muszę coś zrobić z DisplayMetrics, aby upewnić się, że rzeczy są odpowiednio skalowane?
Edycja: Dodawanie trochę wyjaśnień
Wymiar jest coraz odebrał. Tekst zmienia się po ustawieniu różnych rozmiarów tekstu za pomocą mojego niestandardowego atrybutu (w języku xml). Próbowałem również użyć getDimensionPixelSize
.
To tak, jakby odzyskiwanie obliczeń/wymiarów było nieprawidłowe. Zmiana 1sp (lub dp) powoduje znaczącą zmianę.
dodać kilka wyjaśnień na to właściwe rozwiązanie, musiałem najpierw odzyskać wymiar w pikselach, a następnie ustawić rozmiar tekstu poprzez przepuszczenie urządzenia/rodzaj wymiaru byłem przejście w drugim arg. Yeesh. – loeschg