2

Android とリニア/相対レイアウト全体の新機能。このレイアウトを作成する方法を正確に理解するのに助けが必要です:

ここに画像の説明を入力

私がこれまでに行ったことは次のとおりです。

Linear Layout(Vertical)
---Textview ("fixpix.")
---Linear Layout (Horizontal) //first column
------Linear Layout (Vertical, weight 1) //even more nesting here
------Linear Layout (Vertical, weight 1) //even more nesting here
------Linear Layout (Vertical, weight 1) //even more nesting here
---Linear Layout (Horizontal) //last column
------Linear Layout (Vertical, weight 1) //even more nesting here
------Linear Layout (Vertical, weight 1) //even more nesting here
------Linear Layout (Vertical, weight 1) //even more nesting here
---Button ("Learn More.")

ウェイトをネストしてはならないなどの警告がたくさん表示されます。これが正しい方法であるかどうかさえわかりません。誰かが複雑ではなく、より良い方法を提案できますか

4

6 に答える 6

5

適度に複雑なレイアウトを構築する際のヒント。

ImageViews、TextViews などの代わりに、プレーン ビューをプレースホルダーとして使用します。囲んでいる Linears/Relatives/Frames などを含む各要素の背景色を別の色に設定します。そうすれば、各要素が何をしているかを正確に確認し、レイアウトが完璧に見えるまで、ウェイト、「相対性」(layoutToTheRightOf など)、およびサイズを調整できます。次に、プレースホルダーを必要な要素に置き換えます。

既存のレイアウトに問題がある場合は、XML をコピーしてテキスト エディターに貼り付けます。上記を実行してから、個々の要素を 1 つずつコピーしてプレースホルダーに貼り付けます。すぐにレイアウトを制御できます。

もちろん、各 ViewGroup がどのように機能するかを十分に理解することは、優れた Android アプリを構築するための基本です。

幸運を。

于 2012-09-18T08:43:58.993 に答える
1

GridViewを使用してこの問題を解決してみてください。LinearLayoutsの代わりにそれを使用するのがより一般的です:http://developer.android.com/guide/topics/ui/layout/gridview.html

于 2012-09-18T08:19:11.197 に答える
1
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="fill_parent"
    android:layout_height="fill_parent"
    android:orientation="vertical" >

    <TextView
        android:id="@+id/textView1"
        android:layout_width="fill_parent"
        android:layout_height="wrap_content"
        android:gravity="center"
        android:text="top_center_text"
        android:textAppearance="?android:attr/textAppearanceLarge" />

    <LinearLayout
        android:layout_width="fill_parent"
        android:layout_height="wrap_content"
        android:orientation="horizontal" >

        <TextView
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_weight="1"
            android:drawableTop="@drawable/ic_launcher"
            android:gravity="center"
            android:text="names"
            android:textColor="@android:color/background_dark" />

        <TextView
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_weight="1"
            android:drawableTop="@drawable/ic_launcher"
            android:gravity="center"
            android:text="names"
            android:textColor="@android:color/background_dark" />
    </LinearLayout>

    <LinearLayout
        android:layout_width="fill_parent"
        android:layout_height="wrap_content"
        android:orientation="horizontal" >

        <TextView
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_weight="1"
            android:drawableTop="@drawable/ic_launcher"
            android:gravity="center"
            android:text="names"
            android:textColor="@android:color/background_dark" />

        <TextView
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_weight="1"
            android:drawableTop="@drawable/ic_launcher"
            android:gravity="center"
            android:text="names"
            android:textColor="@android:color/background_dark" />
    </LinearLayout>

    <LinearLayout
        android:layout_width="fill_parent"
        android:layout_height="wrap_content"
        android:orientation="horizontal" >

        <TextView
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_weight="1"
            android:drawableTop="@drawable/ic_launcher"
            android:gravity="center"
            android:text="names"
            android:textColor="@android:color/background_dark" />

        <TextView
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_weight="1"
            android:drawableTop="@drawable/ic_launcher"
            android:gravity="center"
            android:text="names"
            android:textColor="@android:color/background_dark" />
    </LinearLayout>

    <Button
        android:layout_width="fill_parent"
        android:layout_height="wrap_content"
        android:gravity="center"
        android:text="top_center_text"
        android:textAppearance="?android:attr/textAppearanceLarge" />

</LinearLayout>

以下は、必要なコードです

于 2012-09-18T08:29:26.610 に答える
1

ArrayAdapterで段組みレイアウトを作成する」を作成してみる

*ステップ 1. 単純なリスト ビューを挿入して、それを複数列にします。* main.xml

<ListView android:id="@+id/mylist" android:layout_width="wrap_content" android:layout_height="wrap_content">
</ListView>

ステップ 2. リストの各行に表示される行フォーマットを作成します。(複数列ビュー)。

ファイル: mylistrow.xml

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout
 xmlns:android="http://schemas.android.com/apk/res/android"
 android:paddingTop="4dip"
 android:paddingBottom="6dip"
 android:layout_width="fill_parent"
 android:layout_height="wrap_content"
 android:orientation="horizontal">
 <TextView android:id="@+id/column1"
    android:gravity=”left”
     android:layout_width="50dip"
     android:layout_height="wrap_content"/>
 <TextView android:id="@+id/column2"
    android:gravity=”center”
     android:layout_width="70dip"
     android:layout_height="wrap_content"
     android:layout_weight="1"/>
 <TextView android:id="@+id/column3"
     android:gravity=”right”
     android:layout_width="60dip"
     android:layout_height="wrap_content"
       android:layout_weight="1"/>
</LinearLayout>

ステップ 3. SimpleAdapter を使用して、これらの列へのデータ バインディングを構成する

ListView list = (ListView) findViewById(R.id.mylist);
ArrayList<HashMap<String, String>> mylistData =
               new ArrayList<HashMap<String, String>>();

String[] columnTags = new String[] {"col1", "col2", "col3"};

int[] columnIds = new int[] {R.id.column1, R.id.column2, R.id.column3};
for(int i=0; i<3; i++)
{
HashMap<String,String> map = new HashMap<String, String>();
 //initialize row data
 for(int j=0; j<3; j++)
 {
   map.put(columnTags[j], "row”+i+”col"+j);
 }
 mylistData.add(map);
 }
 SimpleAdapter arrayAdapter =
           new SimpleAdapter(this, mylistData, R.layout.mylistrow,
                         columnTags , columnIds);
 list.setAdapter(arrayAdapter);
于 2012-09-18T08:25:27.637 に答える
0

GridView の使用を検討する

確かに、LinearLayoutあなたの問題は解決しますが、何かを開発するためのベストプラクティスまたはアプローチを常に使用することを検討してください.

これも使えます

于 2012-09-18T08:26:36.367 に答える
0

GridLayoutまたはTableLayoutを使用できます。

ただし、TableLayout を使用することをお勧めします。

于 2012-09-18T08:36:43.990 に答える