2017-09-14 1 views
0

Ich möchte wissen, ob es möglich ist, meine Textansicht in einer Weise zu gestalten, wo 8000 LP wie [8|0|0|0] LP aussehen würde (mit der oberen und unteren Grenze auch). Ich habe versucht, es nachzuschlagen, aber alles, was ich finden konnte, ist, wie Leute eine Umrandung/Schattengrenze auf Text haben wollen. Ich möchte nicht eine Tabelle in meinem Layout erstellen, wenn das möglich ist, aber wenn es erforderlich ist, geben Sie bitte ein Beispiel, das auf mein Code-Format zugeschnitten ist.Android Textansicht - möglich, um jeden Buchstaben (wie eine Tabellengrenze) zu begrenzen

Hier ist ein Beispiel von dem, was ich meine ... es hat jede Zahl durch diese quadratische Grenze getrennt. duel link

Heres meine Xml (nur für relevante Informationen verkürzt).

<?xml version="1.0" encoding="utf-8"?> 
<android.support.constraint.ConstraintLayout 
    xmlns:android="http://schemas.android.com/apk/res/android" 
    xmlns:app="http://schemas.android.com/apk/res-auto" 
    android:layout_width="match_parent" 
    android:layout_height="match_parent" 
    android:background="@drawable/default_background_obelisk" 
    android:scaleType="centerCrop" 
    android:padding="16dp"> 
<TextView 
     android:id="@+id/playerTwo_LP" 
     android:layout_width="0dp" 
     android:layout_height="0dp" 
     android:gravity="center" 
     android:textSize="40dp" 
     android:textColor="#ffffff" 
     android:text="8000 LP" 
     android:textAppearance="?android:attr/textAppearanceLarge" 
     android:rotation="180" 
     app:layout_constraintTop_toTopOf="parent" 
     app:layout_constraintLeft_toRightOf="@+id/playerTwo_addLP" 
     app:layout_constraintRight_toLeftOf="@+id/playerTwo_loseLP" 
     app:layout_constraintBottom_toBottomOf="@+id/playerTwo_toolKit" 
     android:textIsSelectable="true"/> 

* * * 

<TextView 
     android:id="@+id/playerOne_LP" 
     android:layout_width="0dp" 
     android:layout_height="0dp" 
     android:gravity="center" 
     android:text="8000 LP" 
     android:textAppearance="?android:attr/textAppearanceLarge" 
     app:layout_constraintTop_toTopOf="@+id/playerOne_toolKit" 
     app:layout_constraintLeft_toRightOf="@+id/playerOne_toolKit" 
     app:layout_constraintRight_toLeftOf="@+id/playerOne_CardLibrary" 
     app:layout_constraintBottom_toBottomOf="parent"/> 

Aktuelles Layout

layout

+0

Legen Sie einige zwischen Buchstaben, oder ändern Sie die String zu Char-Arrays! – Xenolion

+0

@Xenolion können Sie ein Beispiel dafür veröffentlichen, wie dies geschehen würde? –

+0

Okay. Lass mich das machen! – Xenolion

Antwort

1

Der Code zur Verfügung gestellt wird zu einer Ansicht führen, wie in der Abbildung dargestellt. Wenn es ist, was Sie wollen, können Sie folgen oder Sie können es anpassen, was Sie wollen!

The code provided will lead to a view as shown in the picture. If it is what you want you can follow along or you can customize it to what you want!:

Zuerst müssen Sie einen angrenzenden xml drawable machen. Dies wird als Hintergrund für jeden Teil Ihres Textes verwendet. Und um jeden Buchstaben oder jede Nummer in Ihrem Text. Machen Sie eine Ressource-Datei in ziehbar Ordner aufrufen lässt es border.xml (vollständiger Name res/drawable/border.xml) .Copy und fügen Sie diese im Inneren:

<?xml version="1.0" encoding="utf-8"?> 
    <shape xmlns:android="http://schemas.android.com/apk/res/android" 
     android:shape="rectangle" > 
     <solid android:color="#00ffffff" /> 
     <stroke android:width="1dip" android:color="#4fa5d5"/> 
     <padding android:left="4dp" android:right="4dp" 
       android:bottom="1dp" android:top="1dp"/>     
    </shape> 

Dies wird einen angrenzenden Effekt auf Ihren Text bringen, Sie können auch Farbe und Polsterung bearbeiten zu passen Sie Ihre Bedürfnisse an. Wir müssen ein Layout mit TextView als Root-Ansicht erstellen. Also in Ihrem Layout-Ordner eine Datei machen lassen Sie uns anrufen border_text_view.xml (vollständiger Name res/layout/border_text_view.xml). Kopieren Sie den Code unten in es:

<?xml version="1.0" encoding="utf-8"?> 
    <TextView xmlns:android="http://schemas.android.com/apk/res/android" 
     android:layout_width="match_parent" 
     android:layout_height="match_parent" 
     android:background="@drawable/border"/> 

Hinweis: Der Hintergrund wird auf die vorherigen erklärt border.xml aus dem ziehbar Ordner.

Dann in Ihrem Layout, wo Sie den angrenzenden Text anzeigen möchten, sagen wir activity_main (es kann jedes Layout sein, das Sie die Ansicht anzeigen möchten).

Fügen Sie diese auf diesem Layout:

....... 
    <LinearLayout 
     android:layout_width="wrap_content" 
     android:layout_height="wrap_content" 
     android:orientation="horizontal" 
     android:id="@+id/layout_border"/> 
    ....... 

Dann in Ihrem Layout der Java-Klasse (Aktivität oder Fragment) erhalten einen Verweis auf das Layout Linear hinzugefügt oben und rufen Sie die Methode wie folgt:

LinearLayout linearLayout=(LinearLayout)findViewById(R.id.layout_border); 
    addBorderedView(this, linearLayout, "8000LP"); 
Jetzt

die Methode machen addBorderedView wie folgt:

private void addBorderedView(Context context, LinearLayout layout, String string_to_display) { 
    String[] array = string_to_display.split(""); 
    for (int i = 1; i < array.length; i++) { 
     TextView borderedTextView = (TextView) LayoutInflater.from(context).inflate(R.layout.border_text_view, null); 
     borderedTextView.setLayoutParams(new LinearLayout.LayoutParams(ViewGroup.LayoutParams.WRAP_CONTENT, ViewGroup.LayoutParams.WRAP_CONTENT)); 
     borderedTextView.setGravity(Gravity.CENTER); 
     borderedTextView.setText(array[i]); 
     LinearLayout.LayoutParams params = (LinearLayout.LayoutParams) borderedTextView.getLayoutParams(); 
     params.setMargins(2, 0, 2, 0); //substitute parameters for left, top, right, bottom 
     borderedTextView.setLayoutParams(params); 
     layout.addView(borderedTextView); 
    } 
} 

Um impr ove Leistung, die Sie möglicherweise benötigen, um einen Ansichtshalter zu machen, wenn Sie vorhaben, große Sätze auf diese Weise anzuzeigen, wenn Sie nicht dann sind, sind Sie gut zu gehen!

+0

Ill es ausprobieren. Für jetzt, für die ausführliche Erklärung krank stimmen auf.Wenn es in meiner mobilen Idee funktioniert, dann erkläre es als Antwort! –

+0

'addBorderedView (dies, linearLayout," 8000LP "); 'gibt mir 3" unerwartete Ende der Deklaration "Fehler –

+0

Ich weiß nicht, was los ist, aber es funktioniert gut in meinem Android-Studio-Projekt! Versuchen Sie den Kontext ActivityName.this wie 'MainActivity.this' zu verwenden, rufen Sie auch die Methode in Ihren Aktivitätsmethoden wie' onCreate() 'auf. Überprüfen Sie auch, ob die Klammern gut organisiert sind. Abgesehen davon funktioniert der Code gut, auch Kontext in einem Fragment ist 'getActivity()' – Xenolion

Verwandte Themen