1

私はAndroidを初めて使用し、WroxのプロのAndroid4アプリ開発本を読んでいます。この本の第4章では、既存のテキストビューを変更する方法について説明しています。私が直面している問題は、アプリのリストビューで編集テキストボックスが非表示になっていることです。その隠された(バックグラウンドで見ることができます)が、それでも機能し、それを介してリストに追加することができます。以下は私のメインアクティビティxmlのコードです

<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:orientation="vertical"
android:layout_width="match_parent"
android:layout_height="match_parent" >
<EditText
    android:id="@+id/myEditText"
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    android:contentDescription="@string/addItemContentDescription"
    android:hint="@string/addItemHint"
    />
<ListView
    android:id="@+id/myListView"
    android:layout_width="match_parent"
    android:layout_height="wrap_content"/>
</RelativeLayout>

と私のtodolist_itemxml

<?xml version="1.0" encoding="utf-8"?>
<com.example.wroxexample.ToDoListItemView
xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="wrap_content" 
android:padding="10dp"
android:scrollbars="vertical"
android:textColor="@color/notepad_text"
android:fadingEdge="vertical"
/>
4

4 に答える 4

3

最初のオプションは、 RelativeLayoutの代わりにLinearLayoutを使用することです。

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:orientation="vertical"
android:layout_width="match_parent"
android:layout_height="match_parent" >
<EditText
    android:id="@+id/myEditText"
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    android:contentDescription="@string/addItemContentDescription"
    android:hint="@string/addItemHint"
    />
<ListView
    android:id="@+id/myListView"
    android:layout_width="match_parent"
    android:layout_height="wrap_content"/>
</LinearLayout>

RelativeLayoutを使用すると、要素を他の要素に対して相対的に配置できます。

一方、LinearLayoutは、要素をxmlファイルに表示される順序で上下に配置します。

2番目のオプションは、RelativeLayoutを保持し、次のタグをListViewに追加することです。

android:layout_below="@id/myEditText"

これにより、ListViewがEditTextの下に配置されます。

于 2012-08-08T12:17:30.560 に答える
2

これを試して:

<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:orientation="vertical"
android:layout_width="match_parent"
android:layout_height="match_parent" >
<EditText
    android:id="@+id/myEditText"
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    android:contentDescription="@string/addItemContentDescription"
    android:hint="@string/addItemHint"
    android:layout_alignParentTop="true"
    />
<ListView
    android:id="@+id/myListView"
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    android:layout_below="@id/myEditText"/>
</RelativeLayout>
于 2012-08-08T12:22:04.797 に答える
2

ティモシーは私の前にそこに着きましたが、病気はもう少しだけ追加します。彼が言うように、線形レイアウトを使用するか、user1387035が言うように、リストビューをeditTextの下に設定することができます。

相対レイアウトとは、「物を比較的レイアウトしたい」という意味で、どこに行くかを言わないと、「重力」が引っ張っているところに浮かぶだけです。デフォルトの重力は上です-それで、あなたのアイテムは両方とも左上に束ねられたと思いますか?

経験則として、アイテムを次々に並べて(水平または垂直に)まとめますか?はいの場合は、線形レイアウトを使用します。それらを異なる方向にプッシュする場合は、相対レイアウトを使用します。いくつかの例外があり、通常、linearlayoutで設定できる「weight」属性が関係しています。(これが私が使用しなければならなかったものです:http ://www.curious-creature.org/2010/08/15/scrollviews-handy-trick/ )

相対レイアウトがあり、'alignParentBottom'やその他の設定を行わずに、layout_below / above属性を使用している場合は、おそらくlinearlayoutが必要です。

あなたの場合、私はあなたがティモシーの解決策を望んでいるように聞こえると思います。オブジェクトを少し離したい場合は、パディング/マージンを使用してオブジェクトの間隔を少し空けることができます。

重力については、LinearLayoutの重力(および一般的に)について頭を悩ませるのに役立つ便利なブログエントリがあります:http://sandipchitale.blogspot.co.uk/2010/05/linearlayout-gravity-and-layoutgravity。 html

于 2012-08-08T12:27:09.770 に答える
2

LinearLayoutとプロパティandroid:layout_weight http://developer.android.com/reference/android/widget/LinearLayout.LayoutParams.htmlを使用します

次のようなものを試してください。

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
   xmlns:tools="http://schemas.android.com/tools"
   android:orientation="vertical"
   android:layout_width="match_parent"
   android:layout_height="match_parent" >
   <ListView
    android:id="@+id/myListView"
    android:layout_width="match_parent"
    android:layout_height="0dip"
    android:layout_weight="1"
    android:entries="@array/testea"
    android:layout_height="wrap_content"/>
<EditText
    android:id="@+id/myEditText"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:contentDescription="@string/addItemContentDescription"
    android:hint="@string/addItemHint"
    />

</LinearLayout>

このようにして、ListViewは未使用のスペースのみを埋めるように拡張されます。

于 2012-08-08T12:27:25.877 に答える