Android ビューでは、Web ページのハイパーリンクと同様に機能するクリック可能なテキストが必要です。
通常のテキスト (ボタンの境界線なし) と同じように見えますが、タッチするとテキストの色が変わり、背景の色が反転することもあります。
背景が透明なボタンまたは TextView を使用する方が良いですか。どちらか一方を選択する必要があるのはいつですか?
どうもありがとう
ボタンを使用してselector
、背景とテキストの両方を作成できます。
textselector.xml
<?xml version="1.0" encoding="utf-8"?>
<selector xmlns:android="http://schemas.android.com/apk/res/android">
<item android:state_pressed="true" android:color="#0000ff"/> <!-- pressed -->
<item android:state_focused="true" android:color="@android:color/white"/> <!-- focused -->
<item android:color="@android:color/white"/> <!-- default -->
</selector>
ボタンセレクター.xml
<?xml version="1.0" encoding="utf-8"?>
<selector xmlns:android="http://schemas.android.com/apk/res/android">
<item android:state_pressed="true" android:color="@android:color/white"/> <!-- pressed -->
<item android:state_focused="true" android:color="#0000ff"/> <!-- focused -->
<item android:color="#0000ff"/> <!-- default -->
</selector>
あなたのレイアウトxmlで
<Button
android:id="@+id/button"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:background="@drawable/buttonselector"
android:text="some text"
android:textColor="@drawable/textselector" />
hotveryspicy は素晴らしい答えをくれて、本当に正しい方向に向けてくれました。ありがとうございます、しかし、私は応答にいくつかの問題がありました.
私が欲しいのは、通常の状態では黒いテキストと灰色の背景、選択された状態では白いテキストを持つ赤い背景を持つボタンです。このような:
hotveryspicy の提案を使用して、次の問題がありました。
ドローアブルを textColor に割り当てようとすると、エラーが発生します。面白いですが、この種のことを行うことへの他の言及を見ています。XML検証がより厳密になったのでしょうか?
buttonselector.xml で android:drawable を定義しなかった場合にもエラーが発生しました。セレクター eiter でドローアブルの色を設定できるようですが、実際にドローアブルを作成する必要があります。
とにかく、これは私がやったことです:
次のようなColor State Resourceを作成しました。
ファイル: res/colors/link_button.xml
<?xml version="1.0" encoding="utf-8"?>
<selector xmlns:android="http://schemas.android.com/apk/res/android">
<item android:state_pressed="true" android:color="#ffffff"/>
<item android:color="#000000"/>
</selector>
次に、次の 3 つのドローアブル:
Shape Drawableを使用した通常の状態のボタンの背景: ファイル: res/drawable/link_button.xml
<?xml version="1.0" encoding="utf-8"?>
<shape xmlns:android="http://schemas.android.com/apk/res/android"
android:shape="rectangle">
<solid android:color="#cccccc"/>
</shape>
選択された状態のボタンの背景、Shape Drawable : ファイル: res/drawable/link_button_selected.xml
<?xml version="1.0" encoding="utf-8"?>
<shape xmlns:android="http://schemas.android.com/apk/res/android"
android:shape="rectangle">
<solid android:color="#ff0000"/>
</shape>
次に、2 つの形状から選択するDrawable Selectorを作成しました。ファイル: res/drawable/link_button_selector.xml
<?xml version="1.0" encoding="utf-8"?>
<selector xmlns:android="http://schemas.android.com/apk/res/android">
<item
android:drawable="@drawable/link_button_selected"
android:state_pressed="true" />
<item
android:drawable="@drawable/link_button" />
</selector>
次に、私のレイアウトでは、ボタンは次のようになります。
<Button
android:id="@+id/button1"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:padding="10dp"
android:text="Button"
android:textColor="@color/link_button"
android:background="@drawable/link_button_selector"
/>
みんな助けてくれてありがとう!
Google のために:
ボタンをリンクのように見せるのではなく、TextView をクリック可能にしてみませんか? これは事実上、私が望んでいたものであり、私の使用のために機能しました。テキストをクリックしてインテントを生成できるようにしたかったのです。
TextView.setOnClickListener(new View.OnClickListener()
のような文字列を追加
<string name="link">'<a href="http://www.google.com" rel="nofollow">Google</a>'</string>
あなたのレイアウトで
<TextView
android:id="@+id/link"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:autoLink="all"
android:linksClickable="true"
android:text="@string/link" />
linkify クラスを使用してテキストをリンクできます。thisとthis をいくつかの例で見てください