2016-04-03 7 views
0

私はアンドロイドでの活動のための私のレイアウトを定義するには、次のxmlファイルを持っている:テキストビューの長さによって、アンドロイドの他の要素の位置が決まるのはなぜですか?

<GridLayout 
    xmlns:android="http://schemas.android.com/apk/res/android" 
    android:layout_width="match_parent" 
    android:layout_height="match_parent" 

    android:useDefaultMargins="true" 
    android:alignmentMode="alignBounds" 
    android:columnOrderPreserved="false" 

    android:columnCount="10" 
    android:background="#cccccc" 
    > 

    <TextView 
     android:text="@string/new_title" 
     android:textSize="32dip" 
     android:layout_columnSpan="10" 
     android:layout_gravity="center_horizontal" 
     android:id="@+id/textTitleEdit" 
     android:layout_row="0" 
     android:layout_column="0" /> 

    <TextView 
     android:text="@string/new_descr" 
     android:textSize="16dip" 
     android:layout_columnSpan="8" 
     android:layout_gravity="left" 
     android:id="@+id/textSubTitleEdit" 
     android:layout_row="1" 
     android:layout_column="0" /> 

    <TextView 
     android:text="@string/new_name" 
     android:layout_gravity="right" 
     android:layout_row="2" 
     android:layout_column="0" 
     /> 
    <EditText 
     android:ems="7" 
     android:singleLine="true" 
     android:inputType="textCapWords" 
     android:id="@+id/new_name" 
     android:layout_row="2" 
     android:layout_column="1" /> 

    <ImageButton 
     android:src="@mipmap/ic_backspace_black_24dp" 
     android:id="@+id/clear_line" 
     android:layout_row="2" 
     android:minHeight="15dp" 
     android:minWidth="15dp" 
     android:maxHeight="15dp" 
     android:maxWidth="15dp" 
     /> 

    <ImageButton 
     android:src="@mipmap/ic_search_black_24dp" 
     android:id="@+id/new_search" 
     android:layout_row="2" 
     android:minHeight="15dp" 
     android:minWidth="15dp" 
     android:maxHeight="15dp" 
     android:maxWidth="15dp" 
     /> 


    _____________ 

    <TextView 
     android:text="@string/new_label" 
     android:layout_gravity="right" 
     android:layout_row="3" 
     android:layout_column="0" /> 



    <EditText 
     android:ems="7" 
     android:singleLine="true" 
     android:inputType="textCapWords" 
     android:id="@+id/new_label" 
     android:layout_row="3" 
     android:layout_column="1" /> 

    ______ 

    <TextView 
     android:layout_column="0" 
     android:text="@string/new_price" 
     android:layout_gravity="right" 
     /> 

    <EditText 
     android:ems="7" 
     android:singleLine="true" 
     android:id="@+id/new_price" 
     android:inputType="numberDecimal" 
     android:layout_row="4" 
     android:layout_column="1" /> 



    <TextView 
     android:layout_column="0" 
     android:text="@string/new_offset" 
     android:layout_gravity="right" 
     android:layout_row="6" /> 

    <EditText 
     android:ems="7" 
     android:singleLine="true" 
     android:id="@+id/new_offset" 
     android:inputType="number" 
     android:layout_row="6" 
     android:layout_column="1" /> 

    <SeekBar 
     android:layout_row="7" 
     android:layout_width="150dp" 
     android:max="10" 
     android:id="@+id/seek_offset" 
     android:layout_column="1" 
     style="@android:style/Widget.Holo.SeekBar"/> 

    <Space 
     android:layout_row="4" 
     android:layout_column="0" 
     android:layout_columnSpan="3" 
     android:layout_gravity="fill" 
     /> 



    <Button 
     android:text="Cancel" 
     android:id="@+id/new_cancel" 
     android:background="@color/colorPrimaryDark" 
     android:layout_row="10" 
     android:layout_column="0" 
     /> 
    <Button 
     android:text="Ok" 
     android:id="@+id/new_ok" 
     android:background="@color/colorPrimaryLight" 
     android:layout_row="10" 
     android:layout_column="8" 
     /> 
</GridLayout> 

これは正常に動作し、私はこのXMLでnonesenseを定義しているかもしれませんが、私は(以下の画像のようなものを参照しますか、間違って何か、私はアンドロイドで始まる初心者ですと...)

enter image description here

しかし、私はいくつかの他の活動にこのレイアウトを再利用し、短いテキストでID textSubTitleEdittextViewのテキストを置き換えています。結果として、Ok -Buttonは左にシフトされ、もはや右下角の代わりになりません。

レイアウトに問題はありますか? TextViewの長さは、ボタンの位置にどのように影響しますか?

+0

何ドン」グリッドビューの代わりにビューをネストするのではなく、グリッドビューのための別個のレイアウトを定義するだけです。 –

+0

私はあなたが何を提案しようとしているのか分かりません... – Alex

答えて

0

ここでの問題は、GridLayoutを使用してすべてのビューをレイアウトに配置していることです。

あなたは、一番下に画面の両側に1つずつを固執するあなたのボタンをしたい場合は、あなたがあなたのGridLayout上記RelativeLayoutを追加することを検討して、以下のようにそこにあなたのボタンを移動:

<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" 
      android:layout_width="match_parent" 
      android:layout_height="match_parent" 
      android:background="#cccccc" 
      > 

<GridLayout 
    android:id="@+id/grid" 
    android:layout_margin="8dp" 
    android:layout_width="match_parent" 
    android:layout_height="wrap_content" 
    android:layout_alignParentTop="true" 
    android:layout_above="@+id/new_cancel" 
    android:alignmentMode="alignBounds" 
    android:columnCount="10" 
    android:columnOrderPreserved="false" 
    android:useDefaultMargins="true"> 

    <TextView 
     android:id="@+id/textTitleEdit" 
     android:layout_column="0" 
     android:layout_columnSpan="10" 
     android:layout_gravity="center_horizontal" 
     android:layout_row="0" 
     android:text="@string/new_title" 
     android:textSize="32dip"/> 

    .... 

    <SeekBar 
     android:id="@+id/seek_offset" 
     style="@android:style/Widget.Holo.SeekBar" 
     android:layout_width="150dp" 
     android:layout_column="1" 
     android:layout_row="7" 
     android:max="10"/> 

    <Space 
     android:layout_column="0" 
     android:layout_columnSpan="3" 
     android:layout_gravity="fill" 
     android:layout_row="4" 
     /> 

</GridLayout> 

<Button 
    android:id="@+id/new_cancel" 
    android:layout_width="wrap_content" 
    android:layout_height="wrap_content" 
    android:layout_alignParentBottom="true" 
    android:layout_alignParentStart="true" 
    android:background="@color/colorPrimaryDark" 
    android:text="Cancel" 
    /> 

<Button 
    android:id="@+id/new_ok" 
    android:layout_width="wrap_content" 
    android:layout_height="wrap_content" 
    android:layout_alignParentBottom="true" 
    android:layout_alignParentEnd="true" 
    android:background="@color/colorPrimaryLight" 
    android:text="Ok" 
    /> 

</RelativeLayout> 
+0

今は他のすべてのテキストフィールドなどが左にシフトされています。たとえば、 "Label"というテキストは、左側に直接表示されていて、うまく見えません。 – Alex

+0

GridLayoutに余白を追加することができます。私は例のコードを更新する – malrok44

関連する問題