コンテキスト:私は基本的にTextViewsの束をラップするRelativeLayoutで構成されるウィジェットを持っています。ここで私はXMLレイアウトコードに続いて、視覚的にウィジェットをしたいように見えるものです:RelativeLayout:layout_marginLeft不整合な動作
<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout
xmlns:android="http://schemas.android.com/apk/res/android"
android:id="@+id/alarm_widget_layout"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
>
<TextView
android:id="@+id/alarm_time"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_centerHorizontal="true"
android:text="8:30"
android:textSize="40sp"
/>
<TextView
android:id="@+id/alarm_am_pm"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_toRightOf="@id/alarm_time"
android:layout_marginLeft="2dp"
android:layout_alignTop="@id/alarm_time"
android:textSize="18sp"
android:text="AM"
/>
<TextView
android:id="@+id/alarm_days"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_centerHorizontal="true"
android:layout_below="@id/alarm_time"
android:textSize="16sp"
android:text="M T W T F S S"
/>
<TextView
android:id="@+id/toggle_indicator"
android:layout_height="8sp"
android:layout_width="80sp"
android:layout_below="@id/alarm_days"
android:layout_centerHorizontal="true"
android:background="@drawable/toggle_button_oval"
/>
</RelativeLayout>
質問:私は次のシナリオでlayout_marginLeftの一貫性のない動作と困惑:これらのウィジェットはのLinearLayout、右上にあるAM/PMのテキスト内で垂直に積層されている
- Android要件:それは上の写真ではないように見えるためにlayout_marginLeft =「15dpを」。
- しかし、ウィジェットが2x2 TableLayoutに積み重ねられている場合、AM/PMテキストにはアンドロイド:layout_marginLeft = "2dp"が正しく表示されている必要があります。
なぜ私はこの矛盾した動作を見ていますか? layout_marginLeftは「起源」として何を使用していますか?
返信いただきありがとうございます@SaurabhVerma。私はこれを正しく理解しているかどうか分からない。 RelativeLayoutの積み重ねに基づいてlayout_marginLeftの変更によって使用された原点をお伝えしていますか? RelativeLayoutが垂直のLinearLayoutに積み重ねられている場合、原点は画面の最も左にあります。ただし、2x2のTableLayoutに積み重ねられている場合、originは@ id/alarm_time(layout_toRightOf属性のため)です。これは非常に混乱しています!この動作はどこに文書化されていますか? –