0

リスト内の各項目のレイアウトを膨らませるカスタム ListAdapter があるカスタム ListActivity があります。Eclipse では、ビジュアル エディターでレイアウトは次のようになります。 エクリプスのレイアウト

これは、次のコードによって行われます。

<?xml version="1.0" encoding="utf-8"?>
<FrameLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:id="@+id/largeFrame"
    android:layout_width="match_parent"
    android:layout_height="match_parent" >

    <RelativeLayout
        android:id="@+id/RelativeLayout1"
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        android:layout_marginLeft="1dp"
        android:layout_marginRight="3dp"
        android:layout_marginTop="5dp"
        android:background="@color/mainBack"
        android:orientation="vertical" >


        <View
            android:id="@+id/imageView1"
            android:layout_width="5dp"
            android:layout_height="fill_parent"
            android:layout_alignParentLeft="false"
            android:layout_alignParentTop="false"
            android:layout_marginLeft="2dp"
            android:background="@android:color/darker_gray" />

        <TextView
            android:id="@+id/newtimeslot_class"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_alignParentTop="true"
            android:layout_marginLeft="4dp"
            android:layout_marginTop="10dp"
            android:layout_toRightOf="@+id/imageView1"
            android:text="Large Text"
            android:textAppearance="?android:attr/textAppearanceLarge"
            android:textColor="@android:color/black" />

        <View
            android:id="@+id/imageView2"
            android:layout_width="wrap_content"
            android:layout_height="2dp"
            android:layout_alignRight="@+id/newtimeslot_class"
            android:layout_below="@+id/newtimeslot_class"
            android:layout_toRightOf="@+id/imageView1"
            android:background="@android:color/darker_gray" />

        <TextView
            android:id="@+id/newtimeslot_time"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_alignBottom="@+id/newtimeslot_class"
            android:layout_alignParentRight="true"
            android:layout_marginRight="5dp"
            android:text="Medium Text"
            android:textAppearance="?android:attr/textAppearanceMedium"
            android:textColor="#646464" />

        <TextView
            android:id="@+id/newtimeslot_location"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_alignParentRight="true"
            android:layout_below="@+id/imageView2"
            android:layout_marginRight="5dp"
            android:text="Medium Text"
            android:textAppearance="?android:attr/textAppearanceMedium"
            android:textColor="#646464" />

        <TextView
            android:id="@+id/newtimeslot_comment"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_alignParentBottom="true"
            android:layout_alignParentRight="true"
            android:layout_below="@+id/newtimeslot_location"
            android:layout_marginBottom="10dp"
            android:layout_marginRight="5dp"
            android:layout_marginTop="2dp"
            android:text="Medium Text"
            android:textAppearance="?android:attr/textAppearanceMedium"
            android:textColor="#646464" />
    </RelativeLayout>

</FrameLayout>

残念ながら、Android デバイスでこれを実行すると、左側の行が完全に消えてしまいます。代わりに次のように見えます

ここに画像の説明を入力

私はそれを膨らませるという点で通常のことをしたばかりで、TextViewオブジェクトにしかアクセスしません。それで、何が起こっているのか、誰かがこの混乱から抜け出すのを手伝ってくれるのだろうかと思っています。

乾杯

編集:インフレコード

@Override
public View newView(Context context, Cursor cursor, ViewGroup parent) {
    final View view = mInflater.inflate(R.layout.timeslotlayout_new, parent, false);

    return view;
}
4

2 に答える 2

1

参照@android:color/darker_grayが問題であると思われます。

一部のデバイスでは、この値が存在しない可能性があります?!? (例えば、別の名前である可能性があります)

background 属性を、を表すこの#00000のような COLOR(アンドロイド カラーリファレンスの代わりに) に設定してみてください (または、この#A9A9A9のような別のカスタム カラーをDarkGrayに選択してください) :

android:background="#A9A9A9"

/また/

Don't HEREのように、最も基本的な色の XML ファイルを作成します。この方法で、デバイス間で色が変わらないこと、そして何よりも、アプリケーションのすべてのデバイスに色が存在することを確認できます。

そうする場合(リンクを参照)、次のような色を作成できます(XMLファイルの名前はまったく関係ありません):

<?xml version="1.0" encoding="utf-8"?>
<resources>
   <color name="Black">#000000</color>
   <color name="DarkGray">#A9A9A9</color>
</resources>

そして、次の方法で参照します。

android:background="@color/DarkGray"

注 : これで問題が解決したかどうかに関係なく、安全のためにこの方法に従うことを強くお勧めします。

于 2013-01-16T12:04:45.603 に答える
0

これを設定していない可能性があります:

android:layout_alignParentLeft="false"

これに:

android:layout_alignParentLeft="true"

ちなみに、android:orientation="vertical"相対レイアウトには適用されません。のみに適用されLinearLayoutます。

そしてnewtimeslot_time TextView変化へと

android:layout_toRightOf="@+id/imageView1"

android:layout_toRightOf="@id/imageView1"

それが役に立てば幸い!

乾杯!

于 2013-01-16T09:16:20.553 に答える