button nachträglich als "normalen" textview

  • Antworten:6
Thomas Seeling
  • Forum-Beiträge: 32

17.01.2012, 17:42:43 via Website

Hallo,


ich hab in einer View mehrere Buttons definiert, die auch sehr schön funktionieren ;)
Allerdings tun sie das nur, wenn die passende Hardware vorliegt, d.h. ein Button mit Telefonnr. ist auf einem Tablet nicht so sinnvoll.
Im Moment setze ich den Button auf Disabled, das sieht aber nicht schön aus.
Ich würde also gern aus dem Button wieder einen Textview machen, sofern die App auf einem Tablet läuft.

Geht das?

1Button btel1=(Button)findViewById(R.id.tel1);
2 Button btel2=(Button)findViewById(R.id.tel2);
3 if (!Tools.isPhone()) {
4/* show button but disabled */
5 btel1.setEnabled(false);
6 btel2.setEnabled(false);
7 }
8 btel1.setText(tel1);
9 btel1.setOnClickListener(new Button.OnClickListener() {
10 //@Override
11 public void onClick(View v) {
12 performDial((String)((Button)findViewById(R.id.tel1)).getText());
13 }
14 });

1<?xml version="1.0" encoding="utf-8"?>
2<LinearLayout
3 xmlns:android="http://schemas.android.com/apk/res/android"
4 android:id="@+id/screen"
5 android:orientation="vertical"
6 android:layout_width="fill_parent"
7 android:layout_height="fill_parent"
8 android:textAppearance="?android:attr/textAppearanceLarge"
9 >
10 <TextView android:id="@+id/date" style="@style/details" />
11 <TextView android:id="@+id/name" style="@style/details" />
12<!-- <TextView android:id="@+id/strasse" style="@style/details" /> -->
13 <Button
14 android:id="@+id/ort"
15 android:text="ort"
16 style="@style/details"
17 />
18 <Button
19 android:text="tel1"
20 android:id="@+id/tel1"
21 style="@style/details"
22 />
23 <Button
24 android:text="tel2"
25 android:id="@+id/tel2"
26 style="@style/details"
27 />
28</LinearLayout>

Danke ;)

Antworten
Felix
  • Forum-Beiträge: 259

17.01.2012, 17:58:06 via Website

Tach!

Ich würde also gern aus dem Button wieder einen Textview machen, sofern die App auf einem Tablet läuft. Geht das?

Nein, vielleicht optisch dran rumfummeln, aber es bleibt ein Button. Du kannst jedoch den Button aus seiner übergeordneten ViewGroup entfernen und an seiner Stelle ein TextView einfügen.


Felix.

Antworten
Markus Gu
  • Forum-Beiträge: 2.644

17.01.2012, 18:26:25 via Website

mach dir einen custom button, der als disabled-state besser aussieht

swordiApps Blog - Website

Antworten
Thomas Seeling
  • Forum-Beiträge: 32

18.01.2012, 10:41:51 via Website

was ist denn der Unterschied zwischen GONE und INVISIBLE? oder ist das synonym?
ich verwende jetzt schon sowas ähnliches: wenn der Eintrag nur eine Nummer hat, blende ich die Box mit der zweiten Nummer aus.

Antworten
Rafael K.
  • Forum-Beiträge: 2.359

18.01.2012, 10:48:52 via Website

INVISIBLE reserviert dennoch Platz in der Oberfläche, das Element ist aber unsichtbar.
GONE reserviert auch keinen Platz in der Oberfläche, so dass das Element komplett aus dem sichtbaren Layout verschwindet.

http://developer.android.com/reference/android/view/View.html#GONE

Mit GONE kann man halt einen Effekt erzeugen, der optisch so aussieht, als würde man Elemente tauschen.

— geändert am 18.01.2012, 10:50:33

Antworten
Thomas Seeling
  • Forum-Beiträge: 32

18.01.2012, 17:18:19 via Website

cool, danke!

Antworten