Android 以编程方式向工具栏添加按钮
Android Adding Buttons to Toolbar Programmatically
我正在尝试以编程方式创建工具栏并在不使用 XML 的情况下添加左右栏按钮。
但是按钮没有右对齐。
Toolbar TopTulBarVar = new Toolbar(this);
TopTulBarVar.setId(View.generateViewId());
TopTulBarVar.setBackgroundColor(Color.parseColor("#DDDDDD"));
TopTulBarVar.setTitle("Ttl Txt");
TopTulBarVar.setSubtitle("Dtl Txt");
Button NamBarBtnVar = new Button(this);
NamBarBtnVar.setText("Select");
NamBarBtnVar.setBackgroundColor(Color.GREEN);
LinearLayout.LayoutParams NamBarBtnRulVar = new LinearLayout.LayoutParams(LinearLayout.LayoutParams.WRAP_CONTENT, LinearLayout.LayoutParams.WRAP_CONTENT);
NamBarBtnRulVar.gravity = Gravity.RIGHT;
TopTulBarVar.addView(NamBarBtnVar, NamBarBtnRulVar);
也试过
RelativeLayout.LayoutParams RloRulVar = new RelativeLayout.LayoutParams(RelativeLayout.LayoutParams.WRAP_CONTENT, RelativeLayout.LayoutParams.WRAP_CONTENT);
RloRulVar.addRule(RelativeLayout.ALIGN_PARENT_RIGHT);
我得到如下图
但需要点赞
在Activity代码中
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
Toolbar t = (Toolbar) findViewById(R.id.tool);
setSupportActionBar(t);
getSupportActionBar().setDisplayShowTitleEnabled(false);
//left side button
Button b = new Button(this);
Toolbar.LayoutParams l1=new Toolbar.LayoutParams(Toolbar.LayoutParams.WRAP_CONTENT, Toolbar.LayoutParams.WRAP_CONTENT);
l1.gravity = Gravity.START;
b.setLayoutParams(l1);
b.setText("left");
t.addView(b);
//center Textview
TextView text=new TextView(this);
text.setText("Text:1");
Toolbar.LayoutParams l2 = new Toolbar.LayoutParams(Toolbar.LayoutParams.WRAP_CONTENT, Toolbar.LayoutParams.WRAP_CONTENT);
l2.gravity = Gravity.CENTER;
text.setLayoutParams(l2);
t.addView(text);
//Right side button
Button b1=new Button(this);
b1.setText("Right");
Toolbar.LayoutParams l3=new Toolbar.LayoutParams(Toolbar.LayoutParams.WRAP_CONTENT, Toolbar.LayoutParams.WRAP_CONTENT);
l3.gravity=Gravity.END;
b1.setLayoutParams(l3);
t.addView(b1);
}
工具栏XML代码
<android.support.v7.widget.Toolbar
android:layout_width="match_parent"
android:background="@color/colorAccent"
android:id="@+id/tool"
app:contentInsetLeft="0dp"
android:paddingRight="10dp"
android:paddingLeft="10dp"
app:contentInsetStart="0dp"
app:contentInsetStartWithNavigation="0dp"
android:layout_height="wrap_content">
</android.support.v7.widget.Toolbar>
输出
对我来说,我在 Toolbar
中添加了一个切换按钮,它确实有效 :
<Toolbar
android:id="@+id/toolbar"
style="@style/Toolbar"
android:visibility="visible"
android:background="@color/white">
<Switch
android:id="@+id/btn_accessible"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_gravity="center_horizontal"
android:layout_margin="10dp"
android:layout_weight="1"
android:visibility="visible"
android:paddingLeft="25sp"
android:paddingRight="25sp"
android:layout_centerHorizontal="true"
android:layout_centerVertical="true"
android:text=""
android:textColor="@color/white"
android:textSize="12sp"
android:thumb="@drawable/custom_switch_thumb"
android:track="@drawable/custom_switch_track"
/>
</Toolbar>
并且在 activity 中我只是设置了 onClick
监听器
对于现在遇到这个问题的任何人:请确保在以编程方式添加视图时使用 androidx.appcompat.widget.Toolbar.LayoutParams
,因为我只是输入 Toolbar.LayoutParams
被 [=16= 意外解析为 android.widget.Toolbar.LayoutParams
] 工作室。我花了一些时间试图弄清楚为什么重力没有改变:如果在向工具栏添加视图之前设置错误的 layoutParams 不会发生异常。我的布局中有 androidx.appcompat.widget.Toolbar
。
我正在尝试以编程方式创建工具栏并在不使用 XML 的情况下添加左右栏按钮。
但是按钮没有右对齐。
Toolbar TopTulBarVar = new Toolbar(this);
TopTulBarVar.setId(View.generateViewId());
TopTulBarVar.setBackgroundColor(Color.parseColor("#DDDDDD"));
TopTulBarVar.setTitle("Ttl Txt");
TopTulBarVar.setSubtitle("Dtl Txt");
Button NamBarBtnVar = new Button(this);
NamBarBtnVar.setText("Select");
NamBarBtnVar.setBackgroundColor(Color.GREEN);
LinearLayout.LayoutParams NamBarBtnRulVar = new LinearLayout.LayoutParams(LinearLayout.LayoutParams.WRAP_CONTENT, LinearLayout.LayoutParams.WRAP_CONTENT);
NamBarBtnRulVar.gravity = Gravity.RIGHT;
TopTulBarVar.addView(NamBarBtnVar, NamBarBtnRulVar);
也试过
RelativeLayout.LayoutParams RloRulVar = new RelativeLayout.LayoutParams(RelativeLayout.LayoutParams.WRAP_CONTENT, RelativeLayout.LayoutParams.WRAP_CONTENT);
RloRulVar.addRule(RelativeLayout.ALIGN_PARENT_RIGHT);
我得到如下图
但需要点赞
在Activity代码中
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
Toolbar t = (Toolbar) findViewById(R.id.tool);
setSupportActionBar(t);
getSupportActionBar().setDisplayShowTitleEnabled(false);
//left side button
Button b = new Button(this);
Toolbar.LayoutParams l1=new Toolbar.LayoutParams(Toolbar.LayoutParams.WRAP_CONTENT, Toolbar.LayoutParams.WRAP_CONTENT);
l1.gravity = Gravity.START;
b.setLayoutParams(l1);
b.setText("left");
t.addView(b);
//center Textview
TextView text=new TextView(this);
text.setText("Text:1");
Toolbar.LayoutParams l2 = new Toolbar.LayoutParams(Toolbar.LayoutParams.WRAP_CONTENT, Toolbar.LayoutParams.WRAP_CONTENT);
l2.gravity = Gravity.CENTER;
text.setLayoutParams(l2);
t.addView(text);
//Right side button
Button b1=new Button(this);
b1.setText("Right");
Toolbar.LayoutParams l3=new Toolbar.LayoutParams(Toolbar.LayoutParams.WRAP_CONTENT, Toolbar.LayoutParams.WRAP_CONTENT);
l3.gravity=Gravity.END;
b1.setLayoutParams(l3);
t.addView(b1);
}
工具栏XML代码
<android.support.v7.widget.Toolbar
android:layout_width="match_parent"
android:background="@color/colorAccent"
android:id="@+id/tool"
app:contentInsetLeft="0dp"
android:paddingRight="10dp"
android:paddingLeft="10dp"
app:contentInsetStart="0dp"
app:contentInsetStartWithNavigation="0dp"
android:layout_height="wrap_content">
</android.support.v7.widget.Toolbar>
输出
对我来说,我在 Toolbar
中添加了一个切换按钮,它确实有效 :
<Toolbar
android:id="@+id/toolbar"
style="@style/Toolbar"
android:visibility="visible"
android:background="@color/white">
<Switch
android:id="@+id/btn_accessible"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_gravity="center_horizontal"
android:layout_margin="10dp"
android:layout_weight="1"
android:visibility="visible"
android:paddingLeft="25sp"
android:paddingRight="25sp"
android:layout_centerHorizontal="true"
android:layout_centerVertical="true"
android:text=""
android:textColor="@color/white"
android:textSize="12sp"
android:thumb="@drawable/custom_switch_thumb"
android:track="@drawable/custom_switch_track"
/>
</Toolbar>
并且在 activity 中我只是设置了 onClick
监听器
对于现在遇到这个问题的任何人:请确保在以编程方式添加视图时使用 androidx.appcompat.widget.Toolbar.LayoutParams
,因为我只是输入 Toolbar.LayoutParams
被 [=16= 意外解析为 android.widget.Toolbar.LayoutParams
] 工作室。我花了一些时间试图弄清楚为什么重力没有改变:如果在向工具栏添加视图之前设置错误的 layoutParams 不会发生异常。我的布局中有 androidx.appcompat.widget.Toolbar
。