7

これは奇妙なことだと思いますが、EditText のように見える必要があるが、それでもボタンのように動作する必要があるボタンがあります。私のレイアウト XML は現在次のようになっています。

<Button
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    style="?android:attr/editTextStyle" />

これにより、EditText の外観が得られますが、ボタンにフォーカスがない限り onClick イベントが発生しないようにすることで、動作が少し混乱します (実質的に 2 回のクリックが必要になります)。ボタンの動作を変更せずにスタイルを維持する方法はありますか?

EditText のように見える 9 パッチの背景を作成することだけを考えましたが、非常に多くの異なる Android バージョンとスキンが存在するため、可能であればシステム スタイルを使用したいと考えています。

4

3 に答える 3

30

ボタンのように振る舞う EditText はどうですか?

<EditText android:id="@+id/Edit"
        android:layout_width="fill_parent"
        android:layout_height="wrap_content"
        android:focusable="false"
        android:focusableInTouchMode="false"
        android:clickable="true"/>

OnClickListener も定義できます。そしてピントが合いません。

于 2011-11-28T22:39:45.767 に答える
1

絶対にボタンにする必要がある場合は、ボタンがフォーカスを受け取ったときに onclick を起動するフォーカス リスナーをボタンに追加できます。

weirdoButton.setOnFocusChangeListener(new OnFocusChangeListener() {

  @Override
  public void onFocusChange(View view, boolean hasFocus) {
    if(hasFocus) {
      weirdoButton.performClick();
    }
  }
});

欠点は、ボタンがトラックボールまたは方向パッドを介してフォーカスを受け取ると、クリックが発生することです。レイアウト ファイルでフォーカス不可にします。

<Button
    android:id="@+id/weirdoButton"
    android:layout_width="match_parent"
    android:layout_height="50dip"
    android:focusable="false"
    style="?android:attr/editTextStyle" />
于 2011-11-28T22:55:30.110 に答える
0

受け入れられた回答では、EditText をボタンとしてスタイル設定できますが、矛盾が見つかりました。それを長押しすると、テキストを貼り付けることができますが、これは UX の点でひどいものです。

これは、EditText としてスタイル設定する代わりに適用したものです。

<Button
    android:layout_width="0dp"
    android:layout_height="wrap_content"
    android:textSize="16sp"
    android:focusable="false"
    android:id="@+id/btnAddMember"
    style="?android:attr/editTextStyle"
    android:focusableInTouchMode="false"
    android:clickable="true"
    android:hint="Button Content"/>
于 2016-07-05T07:57:19.500 に答える