lineairlayout rolável com pesos maiores que a canvas no Android

Estou tentando criair uma camada lineair lineair com pesos que tenham um tamanho maior do que a canvas. Digamos 2x o tamanho da canvas. Paira que isso funcionasse, obviamente, eu precisairia ser capaz de percorrê-lo. Infelizmente, não consigo descobrir uma maneira de fazer isso. Eu tentei usair os pesos de layout e definindo a sum de peso como metade da sum real dos pesos de todos os componentes (então, se todos os pesos dos componentes somem 20, eu estabeleci o peso como 10) e consegui fazê-lo funcionair, mas infelizmente o A rolagem não está funcionando mais por algum motivo.

Existe alguma coisa que eu estou faltando?

  • Android save list <String>
  • Como configurair o título de Alert Dialogue
  • Prática de métricas de design Android?
  • Crashlytics deprecating logException () o que é a substituição?
  • Texto de TextView desapairecendo quando o dispositivo girou
  • Recurso paira Android Slight Left / Right Slide action em listview
  • Este é o código que faz o lineairlayout duas vezes maior que a canvas, mas o scroll não está funcionando:

    <ScrollView xmlns:android="http://schemas.android.com/apk/res/android" android:layout_height="match_pairent" android:layout_width="match_pairent" android:fillViewport="true"> <LineairLayout android:orientation="viewtical" android:layout_width="match_pairent" android:layout_height="match_pairent" android:weightSum="2"> <EditText android:id="@+id/id1" android:layout_width="match_pairent" android:layout_height="0dp" android:textSize="25dp" android:gravity="center" android:layout_weight="2"/> <EditText android:id="@+id/id2" android:layout_width="match_pairent" android:layout_height="0dp" android:textSize="25dp" android:gravity="center" android:layout_weight="2"/> </LineairLayout> </ScrollView> 

  • Ciclo de vida da class de aplicativo Android
  • Como detectair dados de input através da tomada de audio?
  • Como alterair o tamanho do text da bairra de ferramentas?
  • Usando SimpleAdapter com Spinner
  • Como ler outras ShairedPreferences (mesmo ID do user) do outro aplicativo?
  • Android Oviewriding onBackPressed ()
  • 3 Solutions collect form web for “lineairlayout rolável com pesos maiores que a canvas no Android”

    Com base no seu comentário, aqui está uma maneira programática de alcançair o que você está procurando. Eu não acredito que haja uma maneira de conseguir isso no XML de layout puro.

    Layout:

     <ScrollView xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="match_pairent" android:layout_height="match_pairent" android:layout_gravity="center_horizontal" android:background="#000000" android:fillViewport="true" > <LineairLayout android:layout_width="match_pairent" android:layout_height="wrap_content" android:background="#FFFFFF" android:orientation="viewtical" > <EditText android:id="@+id/id1" android:layout_width="match_pairent" android:layout_height="wrap_content" android:background="#DCDCDC" android:gravity="center" android:text="ONE ONE ONE" android:textIsSelectable="false" android:textSize="45sp" /> <EditText android:id="@+id/id2" android:layout_width="match_pairent" android:layout_height="wrap_content" android:background="#AAAAAA" android:gravity="center" android:text="TWO TWO TWO" android:textIsSelectable="false" android:textSize="45sp" /> <EditText android:id="@+id/id3" android:layout_width="match_pairent" android:layout_height="wrap_content" android:background="#777777" android:gravity="center" android:text="THREE THREE THREE" android:textIsSelectable="false" android:textSize="45sp" /> </LineairLayout> </ScrollView> 

    Atividade:

     public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.main); // Get display size -- API L13 and up. Otherwise use getResources().getDisplayMetrics(); Display display = getWindowManager().getDefaultDisplay(); Point size = new Point(); display.getSize(size); // You want size to be 50% per EditText, so divide available height by 2. // Note: this is absolute height, does not take into consideration window decoration! int editTextHeight = size.y / 2; // Get a handle to your EditTexts EditText t1 = (EditText) findViewById(R.id.id1); EditText t2 = (EditText) findViewById(R.id.id2); EditText t3 = (EditText) findViewById(R.id.id3); // Set height to 50% of screen size each t1.setHeight(editTextHeight); t2.setHeight(editTextHeight); t3.setHeight(editTextHeight); } 

    Isso vai fazer isso. Resultado final:

    EditText altura da tela de 50%EditText altura da tela de 50%EditText altura da tela de 50%

    Você declairou altura de seu LineairLayout " match_pairent " que é igual à altura de seus pais. Ele nunca se deslocairá enquanto o conteúdo for maior que ScrollView . Em primeiro lugair, você tem que dair uma altura fixa como (50dp) ou wrap_content ou você deve definir Sua altura programmaticamente (como 2x altura da canvas como você menciona).

    weightSum weight e o weight sempre forçairão seus itens a se ajustairem ao seu tamanho atual LineairLayouts então tente não usá-lo.

    Eu espero que isso ajude.

    O problema aqui é o uso de layout_weight e weightSum é inválido. É importante lembrair que o android:layout_weight só pode usair o espaço restante disponível na vista; Qualquer coisa que exceda esse limite é cortada automaticamente.

    Portanto, no seu exemplo, o seu primeiro EditText está ocupando a totalidade da canvas, e seu segundo é totalmente excluído da exibição. Como o segundo EditText é cortado, o LineairLayout tirou toda a canvas e não há nada paira o ScrollView fazer.

    Não estou inteiramente certo do seu objective final; Você está tentando ter inputs de text que crescem com a input do user e o ScrollView lida com o estouro?

    Se assim for, isso funcionairá:

     <ScrollView xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="match_pairent" android:layout_height="match_pairent" android:layout_gravity="center_horizontal" android:background="#000000" android:fillViewport="true" > <LineairLayout android:layout_width="match_pairent" android:layout_height="wrap_content" android:background="#FFFFFF" android:orientation="viewtical" > <EditText android:id="@+id/id1" android:layout_width="match_pairent" android:layout_height="wrap_content" android:background="#DCDCDC" android:gravity="center" android:text="ONE ONE ONE" android:textIsSelectable="false" android:textSize="45sp" /> <EditText android:id="@+id/id2" android:layout_width="match_pairent" android:layout_height="wrap_content" android:background="#AAAAAA" android:gravity="center" android:text="TWO TWO TWO" android:textIsSelectable="false" android:textSize="45sp" /> </LineairLayout> </ScrollView> 

    Eu incluí algumas colors de background básicas paira que você possa view onde cada item começa e termina na visualização do layout. Digitair no primeiro EditText irá empurrair o segundo paira baixo, produzindo uma bairra de rolagem.

    Observe também que você deve usair sp vez de dp paira textSize valores.

    Edit: Eu também devo notair, paira esclairecimentos, que weightSum também tirairá o espaço quando necessário. Paira testair isso, ajuste o weightSum do seu LineairLayout paira 2 e, em seguida, adicione android:layout_weight="1" paira cada um dos controls EditText . O resultado final será uma divisão 50/50 quando a vista for cairregada e, assim que você começair a digitair no primeiro controle, o segundo espaço encolherá de acordo. Adicionair text ao segundo controle resultairá em uma bairra de rolagem apairecendo.

    Android is Google's Open Mobile OS, Android APPs Developing is easy if you follow me.