7

私は今しばらく苦労しています。テキストが必要なアクティビティについて:[登録]をクリックすると、利用規約とプライバシーポリシーに同意します。「利用規約」と「プライバシーポリシー」の部分はクリック可能である必要があります。私が見つけた解決策は、URLを作成しました。ただし、規約を参照したり、規約アクティビティやプライバシーアクティビティを開始したりするためにURLは必要ありません。

それから私はこれを見つけました: https ://stackoverflow.com/a/9076448/1387161 しかし、ここでの問題は、それらが美しく整列されていないことです。つまり、解像度の低い電話がある場合は、textview2の横にtextview1を設定し、textview1の下にtextview3を設定し、その横にtextview4を設定する必要があります。しかし、タブレットや大画面の携帯電話でアプリを使用すると、すべてのテキストビューを並べて表示できる可能性がありますが、レイアウトは小画面の携帯電話と同じです=

Textview1-Textview2 Textview3-Textview4

考えられる解決策の1つはフローレイアウトですが、エラーが発生し、適切なチュートリアルが見つからないようです(初心者向け) フローレイアウト(または任意のカスタムレイアウト)の使用方法

どんなアイデアでも大歓迎です!

どうも、

ビョルン

4

4 に答える 4

23
public class MainActivity extends Activity {
TextView _tv;


/** Called when the activity is first created. */
@Override
public void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_main);
    _tv = (TextView) findViewById( R.id.textView1 );
    String sentence = "this is [part 1 clickable] and [part 2 clickable] and [part 3 clickable]";


   _tv.setMovementMethod(LinkMovementMethod.getInstance());
   _tv.setText(addClickablePart(sentence), BufferType.SPANNABLE);
}
private SpannableStringBuilder addClickablePart(String str) {
    SpannableStringBuilder ssb = new SpannableStringBuilder(str);

    int idx1 = str.indexOf("[");
    int idx2 = 0;
    while (idx1 != -1) {
        idx2 = str.indexOf("]", idx1) + 1;

        final String clickString = str.substring(idx1, idx2);
        ssb.setSpan(new ClickableSpan() {

            @Override
            public void onClick(View widget) {
                Toast.makeText(MainActivity.this, clickString,
                        Toast.LENGTH_SHORT).show();
            }
        }, idx1, idx2, 0);
        idx1 = str.indexOf("[", idx2);
    }

    return ssb;
 }
}

編集

public class MainActivity extends Activity {
TextView _tv;


/** Called when the activity is first created. */
@Override
public void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_main);
    _tv = (TextView) findViewById( R.id.textView1 );

    SpannableString ss = new SpannableString("Android is a Software stack");

    ss.setSpan(new MyClickableSpan(), 22, 27, Spanned.SPAN_EXCLUSIVE_EXCLUSIVE);//22 to 27 stack is clickable
    ss.setSpan(new MyClickableSpan(), 0, 7, Spanned.SPAN_EXCLUSIVE_EXCLUSIVE);//0 to 7 Android is clickable

   _tv.setText(ss);
   _tv.setMovementMethod(LinkMovementMethod.getInstance());
}
class MyClickableSpan extends ClickableSpan{ //clickable span
    public void onClick(View textView) {
    //do something
       Toast.makeText(MainActivity.this, "Clicked",
            Toast.LENGTH_SHORT).show();
   }
    @Override
    public void updateDrawState(TextPaint ds) {
       ds.setColor(Color.GREEN);//set text color 
       ds.setUnderlineText(false); // set to false to remove underline
    }
}
}

ClickableSpanの詳細http://developer.android.com/reference/android/text/style/ClickableSpan.html

太字、斜体、またはフォントサイズを設定して、スパン可能な文字列のスタイルを設定することもできます。

    StyleSpan boldSpan = new StyleSpan( Typeface.ITALIC );
    ss.setSpan( boldSpan, 22, 27, Spannable.SPAN_EXCLUSIVE_EXCLUSIVE );
    StyleSpan boldSpan1 = new StyleSpan(Typeface.BOLD);
    ss.setSpan(new RelativeSizeSpan(3f), 0, 7, Spannable.SPAN_EXCLUSIVE_EXCLUSIVE);//set fontsize
    ss.setSpan( boldSpan1, 0, 7, Spannable.SPAN_EXCLUSIVE_EXCLUSIVE );
于 2013-03-18T12:07:09.597 に答える
1

HTMLメッセージでRaghunandanAnswerを使用する必要がある場合は、表示機能で次のようにします。

public void displayText(String message) {

            chapterTextView.setText(Html.fromHtml(message),TextView.BufferType.SPANNABLE);
            chapterTextView.setMovementMethod(LinkMovementMethod.getInstance());
            Spannable clickableMessage = (Spannable) chapterTextView.getText();
            chapterTextView.setText(addClickablePart(clickableMessage), BufferType.SPANNABLE);
}

addClickablePartの変更された関数

private SpannableStringBuilder  addClickablePart(Spannable charSequence) {
        SpannableStringBuilder  ssb = new SpannableStringBuilder(charSequence);

        int idx1 = charSequence.toString().indexOf("(");
        int idx2 = 0;
        while (idx1 != -1) {
            idx2 = charSequence.toString().indexOf(")", idx1) + 1;

            final String clickString = charSequence.toString().substring(idx1, idx2);
            ssb.setSpan(new ClickableSpan() {

                @Override
                public void onClick(View widget) {
                    Toast.makeText(getActivity(), clickString,
                            Toast.LENGTH_SHORT).show();
                }
            }, idx1, idx2, Spannable.SPAN_EXCLUSIVE_EXCLUSIVE);
            idx1 = charSequence.toString().indexOf("(", idx2);
        }

        return ssb;
    }

これが誰かを助けることを願っています。

于 2014-08-04T23:15:20.823 に答える
1
ClickableSpan cs = new ClickableSpan() {  
     @Override 
     public void onClick(View view) {  
        //action stuff here
     }  
};

String text_terms_string = getResources().getString(R.string.register_terms_text);
SpannableString ss = new SpannableString(text_terms_string);

int termStart = text_terms_string.indexOf("Terms");
int termStop = termStart + "term".length();

//we set here clickable our text  
ss.setSpan(cs, termStart, termStop, Spanned.SPAN_EXCLUSIVE_EXCLUSIVE);

//we set here our color i.e. #cccccc in this example I take color from xml  
ss.setSpan(new ForegroundColorSpan(getResources().getColor(R.color.aquaBlue)),termStart,termStop,Spanned.SPAN_EXCLUSIVE_EXCLUSIVE);

//we set here text to be bolded    
ss.setSpan(new StyleSpan(Typeface.BOLD),termStart,termStop,Spanned.SPAN_EXCLUSIVE_EXCLUSIVE);

//I set here spannable text to my previous declared TextView  
text_terms_link.setText(ss);

//We set here clickable text, this is important !!  
text_terms_link.setMovementMethod(LinkMovementMethod.getInstance());
于 2015-05-21T11:20:20.253 に答える
-2

わかりました。テキストビューをクリック可能にする必要があります。シンプルです。テキストビューのオブジェクトを作成し、アクティビティを呼び出します

      termnservc =(TextView)findViewById(R.id.srvid);
      termnservc.setOnClickListener(this);
       // use on click method
                    @Override
                public void onClick(View v) {                                         
            switch (v.getId()) {
            case R.id.srvid:
        Intent termsandcondition=new Intent(this, TermsOfService.class);
        startActivity(termsandcondition);
        break;
                    }

}

于 2013-03-18T11:53:32.380 に答える