Como faço para mostrar controles em uma posição fixa para várias resoluções de tela no Android?
-
20-09-2019 - |
Pergunta
Como faço para mostrar controles em uma posição fixa para várias resoluções de tela no Android?
Eu tenho um design de tela como abaixo
<?xml version="1.0" encoding="utf-8"?>
<TableLayout
xmlns:android="http://schemas.android.com/apk/res/android"
android:gravity="center_horizontal"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:orientation="vertical"
android:background="@drawable/img_background_loadbackground">
<TableRow>
<TextView
android:id="@+id/tv1"
android:layout_width="fill_parent"
android:layout_height="300sp"/>
</TableRow>
<TableRow>
</TableRow>
<ProgressBar
android:id="@+id/progressbar"
style="?android:attr/progressBarStyleHorizontal"
android:layout_width="fill_parent"
android:layout_height="wrap_content" />
</TableLayout>
Ele está funcionando na resolução HVGA (320x480), a barra de progresso aparece na parte inferior da tela, mas se eu executar em outra resolução (WQVGA432 - 240X432) a barra de progresso aparece no meio da tela. Não sou capaz de mostrá -lo em uma posição fixa.
Estou usando o arquivo de manifesto mostra abaixo, mas sem saída
<supports-screens android:smallScreens="true"
android:normalScreens="true"
android:largeScreens="true"
android:anyDensity="true" />
Eu não tenho uma solução, por favor, me dê uma idéia para resolver o problema.
Solução
Se você deseja que seus layouts funcionem em diferentes telas de resolução, você deve estar dimensionando -as usando dip
como a unidade. Por exemplo:
android:layout_marginRight="10dip"
dip
significa Pixel independente do dispositivo e usá -los em seu layout significa que o Android escalará automaticamente seu layout, dependendo do que o dispositivo executando o aplicativo possui.
Você pode ler sobre isso no Suportando várias telas Página na documentação do desenvolvedor do Android. Este documento também tem outras opções para lidar com telas diferentes, mas acho que usar dip
é provavelmente o mais fácil.
Outras dicas
Depende de como você definiu seu layout: postar seu layout XML ajudará aqui.
Eu acho que se estiver no meio, você tem algo como:
android:layout_gravity="center"
Mas sim, postar seu XML seria um pouco ajuda!