1. ホーム
  2. android

[解決済み] レイアウトを膨らませてカスタムViewを作成する?

2022-08-23 22:12:56

質問

複数の場所で使用している特定のレイアウトを置き換えるカスタムビューを作成しようとしているのですが、なかなかうまくいきません。

基本的には、これを置き換えたいのですが。

<RelativeLayout
 android:id="@+id/dolphinLine"
 android:layout_width="fill_parent"
 android:layout_height="wrap_content"
    android:layout_centerInParent="true"
 android:background="@drawable/background_box_light_blue"
 android:padding="10dip"
 android:layout_margin="10dip">
  <TextView
   android:id="@+id/dolphinTitle"
   android:layout_width="200dip"
   android:layout_height="100dip"
   android:layout_alignParentLeft="true"
   android:layout_marginLeft="10dip"
   android:text="@string/my_title"
   android:textSize="30dip"
   android:textStyle="bold"
   android:textColor="#2E4C71"
   android:gravity="center"/>
  <Button
   android:id="@+id/dolphinMinusButton"
   android:layout_width="100dip"
   android:layout_height="100dip"
   android:layout_toRightOf="@+id/dolphinTitle"
   android:layout_marginLeft="30dip"
   android:text="@string/minus_button"
   android:textSize="70dip"
   android:textStyle="bold"
   android:gravity="center"
   android:layout_marginTop="1dip"
   android:background="@drawable/button_blue_square_selector"
   android:textColor="#FFFFFF"
   android:onClick="onClick"/>
  <TextView
   android:id="@+id/dolphinValue"
   android:layout_width="100dip"
   android:layout_height="100dip"
   android:layout_marginLeft="15dip"
   android:background="@android:drawable/editbox_background"
   android:layout_toRightOf="@+id/dolphinMinusButton"
   android:text="0"
   android:textColor="#2E4C71"
   android:textSize="50dip"
   android:gravity="center"
   android:textStyle="bold"
   android:inputType="none"/>
  <Button
   android:id="@+id/dolphinPlusButton"
   android:layout_width="100dip"
   android:layout_height="100dip"
   android:layout_toRightOf="@+id/dolphinValue"
   android:layout_marginLeft="15dip"
   android:text="@string/plus_button"
   android:textSize="70dip"
   android:textStyle="bold"
   android:gravity="center"
   android:layout_marginTop="1dip"
   android:background="@drawable/button_blue_square_selector"
   android:textColor="#FFFFFF"
   android:onClick="onClick"/>
</RelativeLayout>

これによって

<view class="com.example.MyQuantityBox"
    android:id="@+id/dolphinBox"
    android:layout_width="fill_parent"
    android:layout_height="wrap_content"
    android:myCustomAttribute="@string/my_title"/>

つまり、私はカスタムレイアウトが欲しいのではなく、カスタムビューが欲しいのです(このビューが子を持つことは不可能なはずです)。

MyQuantityBoxのあるインスタンスから別のインスタンスに変更できる唯一のものは、タイトルです。私は、XML でこれを指定できるようにしたいと思います (最後の XML 行で行っているように)。

どのようにこれを行うことができますか?RelativeLayout を /res/layout の XML ファイルに置き、MyBoxQuantity クラスでそれを展開する必要がありますか?もしそうなら、どのようにそうするのですか?

ありがとうございます!

どのように解決するのですか?

はい、できます。 RelativeLayout、LinearLayout などはビューなので、カスタム レイアウトはカスタム ビューになります。 もしあなたがカスタムレイアウトを作成したかったら、できるはずなので、ただ考慮すべき点です。

複合コントロールの作成です。 RelativeLayout のサブクラスを作成し、コードですべてのコンポーネント (TextView など) を追加し、コンストラクタで XML から渡された属性を読み取ることができます。 そして、その属性をタイトルのTextViewに渡すことができます。

http://developer.android.com/guide/topics/ui/custom-components.html