2012-03-23 4 views

答えて

1

独自のレイアウトを作成する必要があります。カスタムレイアウトを作成し、標準のアダプタ(ArrayAdapterなど)を使用するには、カスタムレイアウトで標準レイアウトと同じIDを指定する必要があります。たとえば、simple_list_item_checkedのTextViewには、ID「@android:id/text1」(http://www.devdaily.com/java/jwarehouse/android-examples/platforms/android-2/data/res/layout/simple_list_item_checked)があります。 xml.shtml)。カスタムレイアウトでは、そのIDを指定します。したがって、カスタムアダプターを書く必要はありません。標準のXMLレイアウトをコピーして変更するだけです。

+1

ありがとうございました。あなたは、標準のレイアウトにあるものとは異なるID(またはIDなし)を与えると、何がうまくいかないでしょうか?私はsimple_list_item_checkedレイアウトをコピーしてIDを完全に削除しました。このようにロードするとまだうまく動作しているようです: 'ArrayAdapter adapter = new ArrayAdapter (context、R.layout.custom_checked_list、arraylist); setListAdapter(adapter); ' – mattboy

+0

はい、あなたは正しいのですが、" layout "== a TextViewです。しかし、他の標準レイアウトでは、これはうまくいかないはずです.LayoutLayoutなど、LayoutManager内で複数のビューで構成されるレイアウトを意味します。 – 207

+1

+1良い点があります。アダプターの実装を見ていた。アダプタがtextViewResourceIdで開始されていない場合、ArrayAdapterはidについて気にしません。リソースIDが指定されていない場合、アダプタは_whole_ ressourceがTextViewであるとみなします。それ以外の場合、アダプタは指定されたリソースID(finViewById)を検索します(ArrayAdapter impl https://github.com/android/platform_frameworks_base/blob/master/core/java/android/widget/ArrayAdapter.javaを参照) – 207

0

はい、そうです。ここで同じようなことが達成されています(RES /値/のstyles.xml):

<?xml version="1.0" encoding="utf-8"?> 
<resources> 
<style name="ContactLabelTextView"> 
    <item name="android:layout_width">wrap_content</item> 
    <item name="android:layout_height">wrap_content</item> 
    <item name="android:gravity">right</item> 
    <item name="android:textSize">14sp</item> 
    <item name="android:textColor">@android:color/white</item> 
    <item name="android:layout_marginLeft">5dp</item> 
    <item name="android:layout_marginRight">5dp</item> 
    <item name="android:layout_marginTop">5dp</item> 
    </style> 
    <style name="questionTableRow"> 
     <item name="android:layout_width">wrap_content</item> 
     <item name="android:layout_height">wrap_content</item> 
     <item name="android:layout_margin">5dp</item> 
     <item name="android:layout_marginLeft">5dp</item> 
     <item name="android:background">@drawable/textview_border</item> 
    </style> 
</resources> 

そして、あなたは(作成したmain.xmlていレイアウトファイル内の要素にスタイルを適用したい場合、RES /layout/your_custom_layout.xml):

<?xml version="1.0" encoding="utf-8"?> 
    <TableRow 
     xmlns:android="http://schemas.android.com/apk/res/android" 
     android:id="@+id/questionTableRow" 
     style="@style/questionTableRow" 

明らかに、これはtextViewを使用して行います。私はtextViewが特定のスタイルを取得する独自のコードの例を提供しました。私は実際にtextViewスタイルを適用することさえありませんが、tableRowにスタイルを適用した場所に貼り付けました。ちょうどxml要素に適用する方法を見ています。

これで必要なのはありますか?

+0

ありがとうございましたが、自分のレイアウトファイルを作成する必要はなく、どうにかしてandroid.Routlay.simple_list_item_checkedを継承し、変更したい特定の値(この場合はテキストサイズ)をオーバーライドするだけですが、この例では自分のスタイルを最初から作りました。これまでのところ、android.R.layoutの標準レイアウトを直接変更することはできないようですが、207で書かれたバージョンを作成する必要があります。 – mattboy

関連する問題