2010-10-03 40 views
28

Làm cách nào để thay đổi văn bản của tiện ích con nút Android trong mã chứ không phải tệp XML?Tiện ích Android: Cách thay đổi văn bản của nút

+0

'((android.widget.Button) findViewById (R.id.epic_button)) setText ("mytitle");. ' –

+0

findViewById không làm việc cho vật dụng! Phương thức này không được hỗ trợ trong tiện ích. – coolcool1994

+1

Nó hoạt động. Chỉ cần chắc chắn thêm 'import android.widget.View;' ở đầu tệp java của bạn. Nếu bạn cũng thêm 'import android.widget.Button;', nó có thể được rút ngắn thành: '((Button) findViewById (R.id.yourButtonName)). SetText (" New Text ");' –

Trả lời

16

tôi đã có thể thay đổi văn bản của nút như thế này:

import android.widget.RemoteViews; 

//grab the layout, then set the text of the Button called R.id.Counter: 
RemoteViews remoteViews = new RemoteViews(getPackageName(), R.layout.my_layout); 
remoteViews.setTextViewText(R.id.Counter, "Set button text here"); 
+2

Tôi bị kẹt ở cùng một nơi .. bạn có thể dán mã không ?? – Harshad

+0

làm cách nào để nhận được văn bản của nút. –

+0

Cảm ơn, điều này đã giúp tôi tiết kiệm thời gian! Bạn cũng cần phải thêm thông tin \t ns.notify (notificationID, notification); – PSIXO

38

Bạn có thể sử dụng phương thức setText(). Ví dụ:

import android.widget.Button; 

Button p1_button = (Button)findViewById(R.id.Player1); 
p1_button.setText("Some text"); 

Ngoài ra, cũng giống như một điểm tham chiếu, Button kéo dài TextView, vì vậy tại sao bạn có thể sử dụng setText() giống như với một TextView bình thường.

+7

Nhưng trên widget findViewById không tồn tại – Skatephone

+1

@Skatephone: Sẽ dễ dàng hơn để giúp bạn nếu bạn đăng một ít mã, sau đó. Điều đó đang được nói, lớp 'RemoteViews' có phương thức' setTextViewText() '. Tôi khuyên bạn nên xem xét điều đó: http://developer.android.com/reference/android/widget/RemoteViews.html#setTextViewText%28int,%20java.lang.CharSequence%29 – eldarerathis

+0

@Skatephone: Bạn không nên gọi findViewById trên một Widget, nhưng trên một Activity hoặc một View. – benvd

0

Tôi đã có một nút trong Layout.xml của tôi đã được định nghĩa là một Xem như trong:

final View myButton = findViewById(R.id.button1); 

tôi đã không có thể thay đổi văn bản trên đó cho đến khi tôi cũng xác định nó dưới dạng một nút:

final View vButton = findViewById(R.id.button1); 
final Button bButton = (Button) findViewById(R.id.button1); 

Khi tôi cần thay đổi văn bản, tôi đã sử dụng bButton.setText("Some Text"); và khi tôi muốn thay đổi chế độ xem, tôi đã sử dụng vButton.

Đã làm việc tuyệt vời!

0

Đây có thể là chủ đề, nhưng đối với những người đang đấu tranh về cách thay đổi chính xác phông chữ của nút văn bản (trường hợp của tôi và câu trả lời của Skatephone đã giúp tôi) Trước tiên chúng ta cần phải có tên chuỗi của nút "chuyển đổi" (đó là một cách để giải thích, nhưng đơn giản) vào java từ xml, và vì vậy chúng tôi dán mã đã nói trên vào MainActivity.java

của chúng tôi.

QUAN TRỌNG! đặt mã theo phương pháp OnCreate!

import android.widget.RemoteViews; 

RemoteViews remoteViews = new RemoteViews(getPackageName(), R.layout.my_layout); 
remoteViews.setTextViewText(R.id.Counter, "Set button text here"); 

Lưu ý:

my_layout phải được thay thế bằng file xml nơi các nút của bạn là

Counter phải được thay thế bằng tên id của nút bấm của bạn ("@+id/ButtonName")

nếu bạn muốn thay đổi văn bản nút chỉ cần chèn văn bản vào vị trí của "Set button text here"

đây đến phần mà bạn thay đổi phông chữ:

Bây giờ bạn "chuyển đổi" từ xml để java, bạn có thể thiết lập một kiểu chữ cho TextView.Dán đoạn mã sau chính xác dưới trước đó chỉ mô tả ở trên

TextView txt = (TextView) findViewById(R.id.text_your_text_view_id); 
     Typeface font = Typeface.createFromAsset(getAssets(), "fonts/MyFontName.ttf"); 
     txt.setTypeface(font); 

nơi ở vị trí của text_your_text_view_id bạn đặt tên id của nút của bạn (như là mã trước) và ở vị trí của MyFontName.ttf bạn đặt phông chữ của bạn mong muốn

CẢNH BÁO! Điều này giả định bạn đã đặt phông chữ mong muốn của bạn vào thư mục tài sản/phông chữ . ví dụ. asset/fonts/MyFontName.ttf

0

sử dụng trao đổi bằng java. setText = "...", đối với lớp java có nhiều phương thức để thực hiện hơn.

//button fechar 
    btnclose.setEnabled(false); 
    btnclose.setText("FECHADO"); 
    View.OnClickListener close = new View.OnClickListener() { 
     @Override 
     public void onClick(View view) { 
      if (btnclose.isClickable()) { 
       btnOpen.setEnabled(true); 
       btnOpen.setText("ABRIR"); 
       btnclose.setEnabled(false); 
       btnclose.setText("FECHADO"); 
      } else { 
       btnOpen.setEnabled(false); 
       btnOpen.setText("ABERTO"); 
       btnclose.setEnabled(true); 
       btnclose.setText("FECHAR"); 
      } 

      Toast.makeText(getActivity(), "FECHADO", Toast.LENGTH_SHORT).show(); 
     } 
    }; 

    btnclose.setOnClickListener(close); 
0

này là rất dễ dàng

Button btn = (Button) findViewById(R.id.btn); 
btn.setText("MyText"); 
Các vấn đề liên quan