2

リストビューの仕切りだけに左右のパディングを追加したいのは、各行の画面の左端が単色である必要があり、リスト全体にパディングを追加すると、それらの色もパディングされるためです。自分で仕切りを作ることができるのは知っていますが、デフォルトの仕切りのドローアブルが見つかりません。

私はこのようなドローアブルを作成しようとしました:

    <View xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    android:paddingLeft="16dp"
    android:paddingRight="16dp"
    android:background="?android:attr/listDivider" />

そしてそれを仕切りにします:

<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:background="@drawable/background_pattern" >

<ListView
    android:id="@+id/status_list"
    android:layout_width="match_parent"
    android:layout_height="fill_parent"
    android:divider="@drawable/list_divider"
    android:headerDividersEnabled="false"
    android:footerDividersEnabled="false" >
</ListView>

しかし、アプリの力はこれで終わります:

02-20 18:02:15.374:E / AndroidRuntime(13457):致命的な例外:メイン
02-20 18:02:15.374:E / AndroidRuntime(13457):android.view.InflateException:バイナリXMLファイルの行#7:クラスandroid.widget.ListViewの拡張中にエラーが発生しました
02-20 18:02:15.374:E / AndroidRuntime(13457):android.view.LayoutInflater.createView(LayoutInflater.java:613)
02-20 18:02:15.374:E / AndroidRuntime(13457):com.android.internal.policy.impl.PhoneLayoutInflater.onCreateView(PhoneLayoutInflater.java:56)
02-20 18:02:15.374:E / AndroidRuntime(13457):android.view.LayoutInflater.onCreateView(LayoutInflater.java:660)
02-20 18:02:15.374:E / AndroidRuntime(13457):android.view.LayoutInflater.createViewFromTag(LayoutInflater.java:685)
02-20 18:02:15.374:E / AndroidRuntime(13457):android.view.LayoutInflater.rInflate(LayoutInflater.java:746)
02-20 18:02:15.374:E / AndroidRuntime(13457):android.view.LayoutInflater.inflate(LayoutInflater.java:489)
02-20 18:02:15.374:E / AndroidRuntime(13457):android.view.LayoutInflater.inflate(LayoutInflater.java:396)
02-20 18:02:15.374:E / AndroidRuntime(13457):com.bitnation.tubeappy.StatusFragment.onCreateView(StatusFragment.java:79)
02-20 18:02:15.374:E / AndroidRuntime(13457):android.support.v4.app.Fragment.performCreateView(Fragment.java:1460)
02-20 18:02:15.374:E / AndroidRuntime(13457):android.support.v4.app.FragmentManagerImpl.moveToState(FragmentManager.java:911)
02-20 18:02:15.374:E / AndroidRuntime(13457):android.support.v4.app.FragmentManagerImpl.moveToState(FragmentManager.java:1088)
02-20 18:02:15.374:E / AndroidRuntime(13457):android.support.v4.app.BackStackRecord.run(BackStackRecord.java:682)
02-20 18:02:15.374:E / AndroidRuntime(13457):android.support.v4.app.FragmentManagerImpl.execPendingActions(FragmentManager.java:1444)
02-20 18:02:15.374:E / AndroidRuntime(13457):android.support.v4.app.FragmentManagerImpl.executePendingTransactions(FragmentManager.java:461)
02-20 18:02:15.374:E / AndroidRuntime(13457):android.support.v4.app.FragmentPagerAdapter.finishUpdate(FragmentPagerAdapter.java:141)
02-20 18:02:15.374:E / AndroidRuntime(13457):android.support.v4.view.ViewPager.populate(ViewPager.java:1012)
02-20 18:02:15.374:E / AndroidRuntime(13457):android.support.v4.view.ViewPager.populate(ViewPager.java:881)
02-20 18:02:15.374:E / AndroidRuntime(13457):android.support.v4.view.ViewPager.onMeasure(ViewPager.java:1366)
02-20 18:02:15.374:E / AndroidRuntime(13457):android.view.View.measure(View.java:15518)
02-20 18:02:15.374:E / AndroidRuntime(13457):android.view.ViewGroup.measureChildWithMargins(ViewGroup.java:4825)
02-20 18:02:15.374:E / AndroidRuntime(13457):android.widget.FrameLayout.onMeasure(FrameLayout.java:310)で
02-20 18:02:15.374:E / AndroidRuntime(13457):android.view.View.measure(View.java:15518)
02-20 18:02:15.374:E / AndroidRuntime(13457):android.widget.LinearLayout.measureVertical(LinearLayout.java:847)
02-20 18:02:15.374:E / AndroidRuntime(13457):android.widget.LinearLayout.onMeasure(LinearLayout.java:588)
02-20 18:02:15.374:E / AndroidRuntime(13457):android.view.View.measure(View.java:15518)
02-20 18:02:15.374:E / AndroidRuntime(13457):android.view.ViewGroup.measureChildWithMargins(ViewGroup.java:4825)
02-20 18:02:15.374:E / AndroidRuntime(13457):android.widget.FrameLayout.onMeasure(FrameLayout.java:310)で
02-20 18:02:15.374:E / AndroidRuntime(13457):com.android.internal.policy.impl.PhoneWindow $ DecorView.onMeasure(PhoneWindow.java:2176)
02-20 18:02:15.374:E / AndroidRuntime(13457):android.view.View.measure(View.java:15518)
02-20 18:02:15.374:E / AndroidRuntime(13457):android.view.ViewRootImpl.performMeasure(ViewRootImpl.java:1874)
02-20 18:02:15.374:E / AndroidRuntime(13457):android.view.ViewRootImpl.measureHierarchy(ViewRootImpl.java:1089)
02-20 18:02:15.374:E / AndroidRuntime(13457):android.view.ViewRootImpl.performTraversals(ViewRootImpl.java:1265)
02-20 18:02:15.374:E / AndroidRuntime(13457):android.view.ViewRootImpl.doTraversal(ViewRootImpl.java:989)
02-20 18:02:15.374:E / AndroidRuntime(13457):android.view.ViewRootImpl $ TraversalRunnable.run(ViewRootImpl.java:4351)
02-20 18:02:15.374:E / AndroidRuntime(13457):android.view.Choreographer $ CallbackRecord.run(Choreographer.java:749)
02-20 18:02:15.374:E / AndroidRuntime(13457):android.view.Choreographer.doCallbacks(Choreographer.java:562)
02-20 18:02:15.374:E / AndroidRuntime(13457):android.view.Choreographer.doFrame(Choreographer.java:532)
02-20 18:02:15.374:E / AndroidRuntime(13457):android.view.Choreographer $ FrameDisplayEventReceiver.run(Choreographer.java:735)
02-20 18:02:15.374:E / AndroidRuntime(13457):android.os.Handler.handleCallback(Handler.java:725)で
02-20 18:02:15.374:E / AndroidRuntime(13457):android.os.Handler.dispatchMessage(Handler.java:92)
02-20 18:02:15.374:E / AndroidRuntime(13457):android.os.Looper.loop(Looper.java:137)
02-20 18:02:15.374:E / AndroidRuntime(13457):android.app.ActivityThread.main(ActivityThread.java:5041)
02-20 18:02:15.374:E / AndroidRuntime(13457):java.lang.reflect.Method.invokeNative(ネイティブメソッド)
02-20 18:02:15.374:E / AndroidRuntime(13457):java.lang.reflect.Method.invoke(Method.java:511)で
02-20 18:02:15.374:E / AndroidRuntime(13457):com.android.internal.os.ZygoteInit $ MethodAndArgsCaller.run(ZygoteInit.java:793)
02-20 18:02:15.374:E / AndroidRuntime(13457):com.android.internal.os.ZygoteInit.main(ZygoteInit.java:560)
02-20 18:02:15.374:E / AndroidRuntime(13457):dalvik.system.NativeStart.main(ネイティブメソッド)
02-20 18:02:15.374:E / AndroidRuntime(13457):原因:java.lang.reflect.InvocationTargetException
02-20 18:02:15.374:E / AndroidRuntime(13457):java.lang.reflect.Constructor.constructNative(ネイティブメソッド)
02-20 18:02:15.374:E / AndroidRuntime(13457):java.lang.reflect.Constructor.newInstance(Constructor.java:417)で
02-20 18:02:15.374:E / AndroidRuntime(13457):android.view.LayoutInflater.createView(LayoutInflater.java:587)
02-20 18:02:15.374:E / AndroidRuntime(13457):...46詳細
02-20 18:02:15.374:E / AndroidRuntime(13457):原因:android.content.res.Resources $ NotFoundException:ドローアブルリソースID#0x7f020007のファイルres / drawable /list_divider.xml
02-20 18:02:15.374:E / AndroidRuntime(13457):android.content.res.Resources.loadDrawable(Resources.java:1953)
02-20 18:02:15.374:E / AndroidRuntime(13457):android.content.res.TypedArray.getDrawable(TypedArray.java:601)
02-20 18:02:15.374:E / AndroidRuntime(13457):android.widget.ListView。(ListView.java:155)
02-20 18:02:15.374:E / AndroidRuntime(13457):android.widget.ListView。(ListView.java:139)
02-20 18:02:15.374:E / AndroidRuntime(13457):...49詳細
4

1 に答える 1

2

これが問題でandroid:divider@drawableまたは@colorドキュメントを参照)が必要ですが@layout、フォルダの下に保存されてい@drawableます(これがコンパイルされる理由です)が、実行時にクラッシュします。

android.content.res.Resources$NotFoundException: File res/drawable/list_divider.xml from drawable resource ID #0x7f020007

残念ながら、デフォルトのandroidドローアブルリストディバイダーを参照し、同時にそのパディング/バウンドをオーバーライドする良い方法はないと思います。ドローアブルのソースファイルを入手したら、9.pngファイルのストレッチ可能/コンテンツ領域を編集してパディングを調整できますが、それはかなり面倒です。

これは私が見つけた回避策です(そしてうまく機能します):を設定し、 (にバインドするために使用する)の下部にandroid:divider="@null"仕切りを追加します。基本的に、仕切りを偽造し、各列の間ではなく、各列の内側に配置されますが、ユーザーには同じように見えます。これで、各行のパディングとは別に仕切りのパディングを制御できるようになります。これがここでの目標です。Viewrow_layout.xmlListView

于 2013-02-20T19:11:06.810 に答える