ボタンをプログラムで追加しようとしています。しかし何らかの理由で長いテキストが私の線形レイアウトでボタン全体を押し下げてしまいます。長いテキストは、直線レイアウトでボタンを押し下げます
ボタン:
public class MyButton : Button
{
public MyButton(Context ctx) : base(ctx)
{
SetTextColor(Color.White);
SetTextSize(Android.Util.ComplexUnitType.Dip, 20);
var llp = new LinearLayout.LayoutParams(0, 100, 1);
llp.SetMargins(4, 0, 4, 4);
LayoutParameters = llp;
SetBackgroundColor(Color.Black);
}
}
行:
public class MyHeader : LinearLayout
{
public MyHeader(Context context, IAttributeSet set) : base(context, set)
{
Orientation = Orientation.Vertical;
LayoutParameters = new LinearLayout.LayoutParams(ViewGroup.LayoutParams.MatchParent, ViewGroup.LayoutParams.WrapContent, 0);
}
protected override void OnAttachedToWindow()
{
base.OnAttachedToWindow();
Draw();
}
private void Draw()
{
for (int r = 0; r < 2; r++)
{
var row = new MyRow(Context);
for (int i = 0; i < 4; i++)
{
var btn = new MyButton(Context);
if (r == 0 && i == 0)
btn.Text = "long text long text long text ";
else
btn.Text = $"Btn {r}.{i}";
row.AddView(btn);
}
AddView(row);
}
}
}
そして、私はXAMLのヘッダを追加する:
public class MyRow : LinearLayout
{
public MyRow(Context context) : base(context)
{
if (LayoutParameters == null)
LayoutParameters = GenerateDefaultLayoutParams();
LayoutParameters.Height = ViewGroup.LayoutParams.WrapContent;
LayoutParameters.Width = ViewGroup.LayoutParams.MatchParent;
((LinearLayout.LayoutParams)LayoutParameters).Gravity = GravityFlags.Top;
((LinearLayout.LayoutParams)LayoutParameters).Weight = 0;
Orientation = Orientation.Horizontal;
}
}
ヘッダ(Iボタンの2つの行を有します)このように:
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:orientation="vertical"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:minWidth="25px"
android:minHeight="25px">
<App1.Resources.layout.MyHeader
android:minWidth="25px"
android:minHeight="25px"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:id="@+id/myHeader1" />
</LinearLayout>
私はボタンの内容がボタンの位置を移動すべきではないことがわかります。しかしそれはそうです。何か案は?あなたのボタンを
追加しようとしました Ellipsize = Android.Text.TextUtils.TruncateAt.Marquee;ボタンは ですが、残念ながらその動作は同じです。 – Evelie