2017-03-23 14 views
0

ツールバーの線形レイアウトにボタンを動的に追加すると奇妙な方法でレンダリングされます: コード内で作成され、ビューに渡されるボタンの幅がランダムな幅。 layoutparamsを "コンテンツをラップする"ように設定しましたが、何の違いもありません。どのようにそれを修正するための任意の手掛かり?私は自分のボタンが含まれているテキストにフィットするようにしたいと思います。ボタンの幅が動的にテキストにフィットしないようにするには

Toolbar.xml:ボタンを追加するには

<?xml version="1.0" encoding="utf-8"?> 
<android.support.v7.widget.Toolbar xmlns:android="http://schemas.android.com/apk/res/android" 
    android:layout_width="fill_parent" 
    android:layout_height="wrap_content" 
    android:minHeight="?attr/actionBarSize" 
    android:background="@color/Blue" 
    android:theme="@style/ThemeOverlay.AppCompat.Dark.ActionBar"> 
    <LinearLayout 
    android:id="@+id/layout_toolbar" 
    android:layout_width="fill_parent" 
    android:orientation="horizontal" 
    android:layout_height="fill_parent"> 
    <Button 
     android:id="@+id/app_name_btn" 
     android:layout_width="wrap_content" 
     android:layout_height="wrap_content" 
     android:paddingTop="3dp" 
     android:background="@android:color/transparent" 
     android:textColor="@android:color/white" 
     android:textSize="14dp" 
     android:textStyle="bold" 
     android:gravity="left|center_vertical" 
     android:text="@string/app_name" /> 

     <!-- dynamically button will be here--> 
    </LinearLayout> 
</android.support.v7.widget.Toolbar>` 

マイコード:

それはレンダリング方法
var layout_toolbar = FindViewById<LinearLayout>(Resource.Id.layout_toolbar); 

//Add arrow image 
ImageView arrow = new ImageView(context); 
arrow.SetBackgroundResource(Resource.Drawable.arrow); 
arrow.Id = ariane_lvl_count; 

layout_toolbar.AddView(arrow); 

//set layoutparams for arrow image 
LinearLayout.LayoutParams lp_arrow = new LinearLayout.LayoutParams(LinearLayout.LayoutParams.WrapContent, LinearLayout.LayoutParams.WrapContent); 
lp_arrow.Gravity = GravityFlags.Left|GravityFlags.CenterVertical; 
lp_arrow.LayoutParameters = lp_arrow; 

//Add button 
Button btn = new Button(this); 
btn.Id = ariane_lvl_count; 
btn.TextSize = 15; 
var folder = (currentFolder + gridViewString[e.Position] + "/"); 
btn.Hint = folder; 
btn.Text = gridViewString[e.Position]; 
btn.SetBackgroundColor(Color.Yellow); 
btn.SetSingleLine(true); 
btn.SetTextColor(Resources.GetColor(Color.Yellow)); 

layout_toolbar.AddView(btn); 

//set layoutparams for button 
LinearLayout.LayoutParams lp_btn = new LinearLayout.LayoutParams(LinearLayout.LayoutParams.WrapContent, LinearLayout.LayoutParams.FillParent); 
lp_btn.Gravity = GravityFlags.Left|GravityFlags.CenterVertical; 
btn.LayoutParameters = lp_btn; 

:赤い下線 elements underlined in red take too much space and do not fit to text like others do

要素があまりにも多くのスペースを取るとそうでありません他の人のようにテキストにフィットする

+0

あなたはこの問題を再現することができ、基本的なデモを共有していただけますか? –

答えて

0

iあなたのためのアイデアがあります。サンプルレイアウト(例:ボタンレイアウト)を作成し、layoutInflaterを使用してツールバーにロードしてみてください。または、ツールバーでweightSumを行います。

Understanding Android LayoutInflater Understanding Android weightSum

+0

助けてくれてありがとう、weightsumは私が必要なものではない、私はすでにそれをどこか別の場所で使ってきた。私はそれをインフレータで試しましたが、それは同じように動作します。 – SirPsycho

関連する問題