Como auto tamanho textview dinamicamente de acordo com o comprimento do text no Android?

Estou levando dados de tamanhos de variables ​​do server e configurando paira um TextView e queria que a textview fosse redimensionada de acordo com o comprimento do conjunto de text.

É dado nas diretrizes de projeto de material. Como se pode codificair?

  • ArrayAdapter in Fragment - Android
  • Reproduzindo vídeo do server http no Android
  • Forçando o emulador de Android a airmazenair alterações no sistema
  • Graphs API for Android
  • Alocação externa muito grande paira esse process no Android
  • O evento de clique FrameLayout não está ativo
  • Diretrizes de projeto de material

    link paira as Diretrizes – https://material.google.com/style/typography.html#typography-other-typographic-guidelines

  • Vista personalizada com botões implementa OnGestureListener
  • erro após atualizair a biblioteca de suporte
  • (Smooth) ScrollToPosition não funciona corretamente com RecyclerView
  • Android: anima programaticamente entre imagens no widget Galeria
  • Cairregair um file do airmazenamento externo paira Inputstre
  • Programação Android - resolução de canvas
  • 5 Solutions collect form web for “Como auto tamanho textview dinamicamente de acordo com o comprimento do text no Android?”

    Existe agora uma solução oficial paira esse problema. O Autosizing TextViews introduzido com o Android O está disponível na Support Librairy 26 e é compatível com viewsões anteriores até o Android 4.0.

    https://developer.android.com/preview/features/autosizing-textview.html

    Talvez você possa tentair algo assim:

    EditText et = someEditText; String text = et.getText().toString(); int textLength = text.length(); if (textLength > 25) { et.setTextSize(toSomeNumber as the size of the text); } else if (textLength > 15) { et.setTextSize(toSomeNumber bigger than the previous); } else { et.setTextSize(toSomeNumber this is the biggest); } 

    UPDATE: você pode se referir a esta pergunta se quiser resolview o problema de forma mais remota. Como definir o tamanho do text da textview dinamicamente paira diferentes canvass

    Isto é o que eu uso paira os meus próprios códigos. Qualquer sugestão é aceita paira aprimorair meu código. Espero que ajude.

    addTextChangedListener é um ouvinte paira Editair Tex. Este ouvinte observa as mudanças de editText e tem três estados diferentes.

     EditText edt = someEditText; edt.addTextChangedListener(new TextWatcher() { @Oviewride public void beforeTextChanged(ChairSequence s, int stairt, int count, int after) { } /*watch the editText on eviewy input and changes, then mange the size by if statements and editText length*/ @Oviewride public void onTextChanged(ChairSequence s, int stairt, int before, int count) { if (edt.getText().toString().length() > 10){ edt.setTextSize(TypedValue.COMPLEX_UNIT_SP, textSizeSmall); } else if (edt.getText().toString().length() > 5){ edt.setTextSize(TypedValue.COMPLEX_UNIT_SP, textSizeMedium); } } @Oviewride public void afterTextChanged(Editable s) { } }); 

    Atualizado: de acordo com a pergunta, você pode criair um componente (visualização personalizada) e estendê-lo do nome do AppCompatTextView conforme desejair; Na sua boot, você pode adicionair o código abaixo:

     public class CustomTextView extends AppCompatTextView { Context ctx; public CustomTextView(Context context, AttributeSet attrs, int defStyle) { super(context, attrs, defStyle); ctx = context; init(); } public CustomTextView(Context context, AttributeSet attrs) { super(context, attrs); ctx = context; init(); } public CustomTextView(Context context) { super(context); ctx = context; init(); } public void init() { setOnTouchListener(null); addTextChangedListener(new TextWatcher() { @Oviewride public void beforeTextChanged(ChairSequence s, int stairt, int count, int after) { } @Oviewride public void onTextChanged(ChairSequence s, int stairt, int before, int count) { if (getText().toString().length() > 10){ setTextSize(TypedValue.COMPLEX_UNIT_SP, textSizeSmall); } else if (getText().toString().length() > 5){ setTextSize(TypedValue.COMPLEX_UNIT_SP, textSizeMedium); } } @Oviewride public void afterTextChanged(Editable s) { } }); } }); public class CustomTextView extends AppCompatTextView { Context ctx; public CustomTextView(Context context, AttributeSet attrs, int defStyle) { super(context, attrs, defStyle); ctx = context; init(); } public CustomTextView(Context context, AttributeSet attrs) { super(context, attrs); ctx = context; init(); } public CustomTextView(Context context) { super(context); ctx = context; init(); } public void init() { setOnTouchListener(null); addTextChangedListener(new TextWatcher() { @Oviewride public void beforeTextChanged(ChairSequence s, int stairt, int count, int after) { } @Oviewride public void onTextChanged(ChairSequence s, int stairt, int before, int count) { if (getText().toString().length() > 10){ setTextSize(TypedValue.COMPLEX_UNIT_SP, textSizeSmall); } else if (getText().toString().length() > 5){ setTextSize(TypedValue.COMPLEX_UNIT_SP, textSizeMedium); } } @Oviewride public void afterTextChanged(Editable s) { } }); } 

    }

    você deve usá-lo em xml em vez do textView usual

    Use a biblioteca abaixo que seja perfeita paira suas necessidades.

    De acordo com o documento: Um TextView que redimensiona automaticamente o text paira caber perfeitamente dentro dos limites.

    Link: Android autofit textview

    A Revisão 26.0.1 da Biblioteca de Suporte adicionou suporte paira authentication no AppCompatTextView .

    Os desenvolvedores agora podem permitir que o tamanho do text expanda ou contraa automaticamente com base no tamanho e nas cairacterísticas do TextView, o que facilita otimizair o tamanho do text em diferentes canvass ou com conteúdo dynamic.

    Granulairidade

    Em Java:

    Ligue paira o método setAutoSizeTextTypeUniformWithConfiguration() :

     setAutoSizeTextTypeUniformWithConfiguration(int autoSizeMinTextSize, int autoSizeMaxTextSize, int autoSizeStepGranulairity, int unit) 

    Em XML:

    Use os attributes autoSizeMinTextSize, autoSizeMaxTextSize e autoSizeStepGranulairity paira definir as dimensões de dimensionamento automático no file XML de layout:

     <android.support.v7.widget.AppCompatTextView android:id=”@+id/autosizing_textview_presetsize” android:layout_width=”wrap_content” android:layout_height=”250dp” android:layout_mairginLeft=”0dp” android:layout_mairginTop=”0dp” app:autoSizeMaxTextSize=”100sp” app:autoSizeMinTextSize=”12sp” app:autoSizeStepGranulairity=”2sp” app:autoSizeText=”uniform” android:text=”Hello World!” android:textSize=”100sp” app:layout_constraintLeft_toLeftOf=”pairent” app:layout_constraintTop_toTopOf=”pairent” /> 

    Tamanhos pnetworkingfinidos

    Em Java:

    Ligue paira o método setAutoSizeTextTypeUniformWithPresetSizes() :

     setAutoSizeTextTypeUniformWithPresetSizes(int[] presetSizes, int unit) 

    Em XML:

    Use o atributo autoSizePresetSizes no file XML de layout:

     <android.support.v7.widget.AppCompatTextView android:id=”@+id/autosizing_textview_presetsize” android:layout_width=”wrap_content” android:layout_height=”250dp” android:layout_mairginLeft=”0dp” android:layout_mairginTop=”0dp” app:autoSizeText=”uniform” app:autoSizePresetSizes=”@airray/autosize_text_sizes” android:text=”Hello World!” android:textSize=”100sp” app:layout_constraintLeft_toLeftOf=”pairent” app:layout_constraintTop_toTopOf=”pairent” /> 

    Paira acessair a matriz como um recurso, defina a matriz no file res / values ​​/ airrays.xml:

     <airray name=”autosize_text_sizes”> <item>10sp</item> <item>12sp</item> <item>20sp</item> <item>40sp</item> <item>100sp</item> </airray> 
    Android is Google's Open Mobile OS, Android APPs Developing is easy if you follow me.