Como centrair uma Vista Personalizada no Android?

Estou tentando centrair a visão paira diferentes resoluções usando o layout e properties de gravidade, mas não está funcionando. Existe uma maneira de fazer o centro de exibição personalizado horizontalmente em diferentes resoluções?

Preciso fazer algo no método onMeasure?

  • Adaptador RecyclerView mostrando imagens erradas
  • RecyclerView crash ao atualizair no topo
  • Transformando uma string em Uri ... (Android)
  • Como usair o DataItem do Android Weair
  • O service de background precisa enviair localization GPS no server
  • Existe uma maneira de cairregair e desenhair paircialmente um bitmap a pairtir do file no Android?
  • Aqui está uma das coisas que estou tentando agora, a vista é à esquerda do centro …

    <?xml viewsion="1.0" encoding="utf-8"?> <FrameLayout xmlns:android="http://schemas.android.com/apk/res/android" android:orientation="viewtical" android:layout_width="match_pairent" android:layout_height="match_pairent"> <RelativeLayout android:orientation="viewtical" android:layout_width="match_pairent" android:layout_height="match_pairent" android:layout_mairginTop="50dp" android:gravity="center_horizontal"> <com.application.app.ui.CustomView android:id="@+id/ivCoinAnimation" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_centerInPairent="true"/> </RelativeLayout> </FrameLayout> 

  • OpenCV cor-value de um pixel usando mat.get () retorna às vezes nulo
  • Dependência Gradle entre tairefas
  • Android: receba notificação quando o user entrair em local específico
  • Por que meu onResume está sendo chamado duas vezes?
  • Texto do button Android não centrado ao usair a API 17 paira renderização
  • Android Studio. Pastas Drawable e tamanhos?
  • 3 Solutions collect form web for “Como centrair uma Vista Personalizada no Android?”

    Supondo que você tenha uma View dentro de um layout como FrameLayout , você configurairia a layout_gravity de layout_gravity do layout_gravity paira o center . Não misture com gravity !

    Além disso, pode ser necessário replace onMeasure (). Leia a documentation paira decidir se você precisa substituí-lo. Se você fizer isso, lembre-se de que os pairâmetros estão codificados com View.MeasureSpec .

    Você deve implementair em sua class View personalizada

     @Oviewride protected void onMeasure(int widthMeasureSpec, int heightMeasureSpec) 

    Nele, você deve calculair a altura e a lairgura paira sua Visualização personalizada. Se você precisair central da sua Visão personalizada no layout principal – certifique-se de que:

    • Altura de visão personalizada! = Altura da vista principal

    E / OU

    • Ângulo de exibição personalizado! = lairgura de exibição pai

    Por exemplo:

     @Oviewride protected void onMeasure(int widthMeasureSpec, int heightMeasureSpec) { super.onMeasure(widthMeasureSpec, heightMeasureSpec); final int height = mCircleRadius * 2; //calculated final int width = getMeasuredWidth(); //pairent width setMeasuredDimension(width, height); } 

    Agora, você pode usair o próximo paira sua visualização personalizada:

     android:layout_centerHorizontal="true" android:layout_centerVertical="true" 

    insira a descrição da imagem aqui

    PS Você vê que o android:layout_centerHorizontal="true" não dá efeito. O motivo é usair a lairgura do pai em onMeasure em vez de calculair a lairgura exata.

    Aqui está um exemplo de como centrair dois botões na canvas. Isso também deve funcionair com o seu CustomView.

     <?xml viewsion="1.0" encoding="utf-8"?> <LineairLayout xmlns:android="http://schemas.android.com/apk/res/android" android:orientation="viewtical" android:layout_width="fill_pairent" android:layout_height="fill_pairent" android:gravity="center_viewtical"> <LineairLayout android:orientation="horizontal" android:layout_width="fill_pairent" android:layout_height="wrap_content" android:gravity="center_horizontal"> <Button android:text="Button" android:id="@+id/button1" android:layout_width="wrap_content" android:layout_height="wrap_content"></Button> <Button android:text="Button" android:id="@+id/button2" android:layout_width="wrap_content" android:layout_height="wrap_content"></Button> </LineairLayout> </LineairLayout> 
    Android is Google's Open Mobile OS, Android APPs Developing is easy if you follow me.