2016-08-29 9 views
0

私はシンプルGridLayout持って行く:IDEから下記(画像から分かるように、アンドロイドのGridLayout fill_horizo​​ntalはオフスクリーン

<GridLayout 
    xmlns:android="http://schemas.android.com/apk/res/android" 
    android:layout_width="match_parent" 
    android:layout_height="wrap_content" 
    android:columnCount="2" 
    android:rowCount="1" > 

    <TextView 
     android:layout_column="0" 
     android:layout_row="0" 
     android:text="Label"/> 

    <EditText 
     android:inputType="text" 
     android:layout_column="1" 
     android:layout_row="0" 
     android:text="asdf asdf asdf asdf asdf asdf asdf asdf asdf asdf asdf asdf asdf" 
     android:layout_gravity="fill_horizontal"/> 
</GridLayout> 

は、しかし、これは画面をオフに拡張するEditTextの原因となるが、それは時に同じことをデバイスで実行中)。

enter image description here

EditTextが実際に画面の幅いっぱいではなく、それはオフスクリーン起こっている理由ですGridLayoutセルの幅であることが表示されます。これを引き起こすためにレイアウトに何が間違っていますか?

+1

http://stackoverflow.com/questions/30845440/edittext-getting-out-of-gridlayoutこれを参照 – KrishnaJ

答えて

0

なぜGridViewを必要としているのか分かりませんが、おそらくあなたはもっとよく知っていますが、この投稿で役に立つものを見つけることができます。Gridview with two columns and auto resized images

GridViewには2つの列があり、それぞれの内部に幅と高さのパラメータを設定していないビューがあります。この場合、Androidはwrap_content以外のものです。

TextViewとEditTextにlayout_width = "wrap_content"が設定されている場合、コンテンツ全体をラップするまで、それらは1行に拡張されます。だからこそ、あなたは電話の画面の外に出ています。

このXMLを試してみて、あなたが期待される動作が表示されます:私たちはここでやっている

<GridLayout xmlns:android="http://schemas.android.com/apk/res/android" 
android:layout_width="match_parent" 
android:layout_height="wrap_content" 
android:columnCount="2" 
android:rowCount="1"> 
<TextView 
    android:layout_width="20dp" 
    android:layout_height="wrap_content" 
    android:layout_columnWeight="0.5" 
    android:layout_column="0" 
    android:text="Label with some long text event more text"/> 
<EditText 
    android:layout_width="50dp" 
    android:layout_height="wrap_content" 
    android:layout_columnWeight="1.5" 
    android:inputType="textMultiLine" 
    android:layout_column="1" 
    android:text="Some really long text here and more and more and more .... " 
    android:layout_gravity="fill_horizontal"/> 

はちょうど彼らアンドロイドについて、あなたの子供(のTextViewとのEditText)にいくつかのハードコードされた値を設定することです:layout_width属性、android:layout_columnWeight属性も指定します。これはあなたの列のいくつかの割合を設定します(あなたのニーズに合わせてこの値を設定してください)。

EditTextでは、テキストが複数の行に折り返されるように小さなもの(android:inputType = "textMultiLine")も実行しています。

私はいくつかの入力フォームを行っていますが、このためにLinearLayoutのような他のViewGroupを使用することをお勧めします。

ありがとうございます。ご質問ありがとうございます。

+0

ありがとうございました。この例題は、問題に焦点を当てるために省略されています。それは単純な理由です。解決策は、layout_widthを0dpに設定するという質問へのコメントで指し示されました。 – jgm

+0

問題を解決するために同じことをしているとき(なぜなら、あなたの幅attrに0dpを設定する)、私はこの応答に対して-1を与える理由はわかりませんが、私はそれについて何もできません。私の答えは否定的な投票を受け取るために間違っていません – Sniper

+0

私はあなたの答えを選択していませんが、画面の幅を埋めるのに縁から落ちないように必要な結果を提供しない固定幅を使用するためです。 – jgm

関連する問題