2016-12-12 47 views
1

私はXamarin.formsを使ってアプリを作っています。Androidで2行のTextViewを作成するには?

私の問題は、2行のTextViewを作成する方法がないことです。 十分な幅を設定しても、テキストは自動的に次の行に移動します。私は行番号とMaxLineNumberの両方を設定した場合

私は、単一の行を作成したい場合は、私は1

として真とsetMaxLineとして単一行プロパティを設定しますが、2本のライン、それは動作しません。 テキストは3行目になります。例えば 、テキスト値がある場合は、「私は赤ちゃんではないロボットです。\ nPleaseは私にミルクを与える」、それがこの問題を解決する方法

I'm a baby not robot. 
Please give me 
a milk 

のようになりますか?

ありがとうございました。

+0

[この](http://stackoverflow.com/questions/5460256/string-resource-new-line-n-not-possibleが)それは私がそれについて申し訳ありません –

+0

を助けることを願う表示しよう。私はEditTextではなく、2行のTextViewを作ろうとしています。私は質問を編集しました。 –

+0

XamarinフォームにTextViewがありません。明確にすることはできますか? –

答えて

2

デフォルトでは、AndroidのすべてのEditTextウィジェットは複数行になっています。ここで

は、いくつかのサンプルコードです:私は行番号とMaxLineNumberの両方を設定した場合はここで

<EditText 
    android:inputType="textMultiLine" <!-- Multiline input --> 
    android:lines="8" <!-- Total Lines prior display --> 
    android:minLines="6" <!-- Minimum lines --> 
    android:gravity="top|left" <!-- Cursor Position --> 
    android:maxLines="10" <!-- Maximum Lines --> 
    android:layout_height="wrap_content" <!-- Height determined by content --> 
    android:layout_width="fill_parent" <!-- Fill entire width --> 
    android:scrollbars="vertical" <!-- Vertical Scroll Bar --> 
/> 
+0

私はそれを知っています。しかし、私はそれを2つのラインを持つようにしたい。しかし、もし私がmaxlineとlinesを2つに設定すると、動作しません。 android:layout_height = "wrap_content"の場合でも –

+0

? –

+0

申し訳ありません。私はEditTextではなく、2行のTextViewを作ろうとしています。私は質問を編集しました。 –

0

は私のために

<TextView 
    android:text="I'm a baby not robot.\nPlease give me a milk" 
    android:layout_width="match_parent" 
    android:layout_height="wrap_content" 
    android:id="@+id/textView1" 
    android:singleLine="false" 
    android:maxLines="10" /> 

enter image description here

0

が、2つのラインを、どのような作品です、 それは動作しません。テキストは3行目になります。

カスタムラベルコントロールを作成し、XAMLでそれを消費することができます。

CustomLabel:

public class CustomLabel:Label 
{ 
} 

XAML:

<ContentPage ... 
     xmlns:local="clr-namespace:LabelDemo" 
     ...> 
<local:CustomLabel Text="I'm a baby not robot. \nPlease give me a milk" VerticalOptions="Center" HorizontalOptions="Center" /> 

その後、カスタムを作成あなたのDroidプロジェクトのレンダラーは以下のようになります:

using Android.Widget; 
using Xamarin.Forms.Platform.Android; 
using Xamarin.Forms; 
[assembly:ExportRenderer(typeof(LabelDemo.CustomLabel),typeof(LabelDemo.Droid.MyLabelRenderer))] 
namespace LabelDemo.Droid 
{ 
    public class MyLabelRenderer:LabelRenderer 
    { 
     protected override void OnElementChanged(ElementChangedEventArgs<Label> e) 
     { 
      base.OnElementChanged(e); 
      if (Control != null) 
      { 
       var text = Control.Text; 
       text = text.Replace("\\n", "\n");//"\n" in shared project will be automatically transformed into "\\n", so we need to change it back 
       Control.SetLines(2); 
       Control.SetText(text, TextView.BufferType.Normal); 
      } 
     } 
    } 
} 
+0

ご返信が遅れて申し訳ありませんが、あなたの提案は実際に質問を投稿する前のことです。私の状況が少し違うので、おそらく動作しません。しかし実際には、テキストを自動的に切断することは保証されません。私のテキストは2行目まで表示されますが、問題は2行目が実際に2行目ではなく1行目から自動的に切り取られることです。 –

+0

それからおそらくレイアウトの問題だと思います。空のプロジェクトでは、正しく動作しています。あなたの仕事を示すためにいくつかのコードを共有できますか? –

+0

私はそうすべきだと思った。しかし、私はそれについて残念です。カスタムレンダラーの使い方が似ていないようなレイアウトの問題だと思います。私は別のアプローチを使うべきだと思います。これまでのおかげでありがとう。私のコードは少し複雑です、私は時間があればそれを表示します。 –

関連する問題