将 style="?android:attr/buttonBarStyle" 设置为父布局,将 style="?android:attr/buttonBarButtonStyle" 设置为按钮使它们不可见
Setting style="?android:attr/buttonBarStyle" to parent layout and style="?android:attr/buttonBarButtonStyle" to buttons make them invisible
我遵循了 Android 的建议并将 style="?android:attr/buttonBarStyle"
设置为父布局,将 style="?android:attr/buttonBarButtonStyle"
设置为按钮。
所以现在我的布局是这样的:
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="horizontal"
style="?android:attr/buttonBarStyle">
<Button
android:id="@+id/button1"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="Button 1"
style="?android:attr/buttonBarButtonStyle"/>
<Button
android:id="@+id/button2"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="Button 2"
style="?android:attr/buttonBarButtonStyle"/>
<Button
android:id="@+id/button3"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="Button 3"
style="?android:attr/buttonBarButtonStyle"/>
</LinearLayout>
但是设置样式后,这些按钮都看不见了,但我仍然可以点击它们。
请告诉我哪里出了问题。
编辑:其他详细信息
好吧,我刚刚创建了一个专门用于测试此布局的新项目,令人惊讶的是它确实有效。
因此,更准确地说,实际上,我将此布局动态添加到另一个布局中,如下所示:
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical">
<LinearLayout
android:id="@+id/buttons_panel_container"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:orientation="horizontal">
</LinearLayout>
<!-- some other stuff -->
</LinearLayout>
代码:
LayoutInflater layoutInflater = (LayoutInflater) getApplicationContext().getSystemService(Context.LAYOUT_INFLATER_SERVICE);
LinearLayout buttonsPanelContainer = (LinearLayout) findViewById(R.id.buttons_panel_container);
View buttonPanelView = null;
if(chosenValueType.equals("some_type")) {
buttonPanelView = layoutInflater.inflate(R.layout.some_buttons_panel, null);
Button Button1 = (Button) buttonPanelView.findViewById(R.id.button1);
Button1.setOnClickListener(this);
Button Button2 = (Button) buttonPanelView.findViewById(R.id.button2);
Button2.setOnClickListener(this);
} else if (chosenRawValueType.equals("another_type") {
//...
ViewGroup insertPoint = (ViewGroup) buttonsPanelContainer;
insertPoint.addView(buttonPanelView, 0, new ViewGroup.LayoutParams(ViewGroup.LayoutParams.MATCH_PARENT, ViewGroup.LayoutParams.WRAP_CONTENT));
抱歉没早点说,没想到会是这样。
那怎么了?
提供的示例也适用于我。搜索此样式属性后,我找到了这个示例:https://developer.android.com/samples/BorderlessButtons/res/layout/sample_main.html
Here you can read to apply the style to every button,你在你给的例子中所做的。所以我的意思是有东西覆盖了你的按钮或按钮上的文本设置为白色(或你应用程序的背景颜色)。
我只需要使用
LayoutInflater layoutInflater = LayoutInflater.from(this);
而不是
LayoutInflater layoutInflater = (LayoutInflater) getApplicationContext().getSystemService(Context.LAYOUT_INFLATER_SERVICE);
我遵循了 Android 的建议并将 style="?android:attr/buttonBarStyle"
设置为父布局,将 style="?android:attr/buttonBarButtonStyle"
设置为按钮。
所以现在我的布局是这样的:
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="horizontal"
style="?android:attr/buttonBarStyle">
<Button
android:id="@+id/button1"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="Button 1"
style="?android:attr/buttonBarButtonStyle"/>
<Button
android:id="@+id/button2"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="Button 2"
style="?android:attr/buttonBarButtonStyle"/>
<Button
android:id="@+id/button3"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="Button 3"
style="?android:attr/buttonBarButtonStyle"/>
</LinearLayout>
但是设置样式后,这些按钮都看不见了,但我仍然可以点击它们。
请告诉我哪里出了问题。
编辑:其他详细信息
好吧,我刚刚创建了一个专门用于测试此布局的新项目,令人惊讶的是它确实有效。
因此,更准确地说,实际上,我将此布局动态添加到另一个布局中,如下所示:
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical">
<LinearLayout
android:id="@+id/buttons_panel_container"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:orientation="horizontal">
</LinearLayout>
<!-- some other stuff -->
</LinearLayout>
代码:
LayoutInflater layoutInflater = (LayoutInflater) getApplicationContext().getSystemService(Context.LAYOUT_INFLATER_SERVICE);
LinearLayout buttonsPanelContainer = (LinearLayout) findViewById(R.id.buttons_panel_container);
View buttonPanelView = null;
if(chosenValueType.equals("some_type")) {
buttonPanelView = layoutInflater.inflate(R.layout.some_buttons_panel, null);
Button Button1 = (Button) buttonPanelView.findViewById(R.id.button1);
Button1.setOnClickListener(this);
Button Button2 = (Button) buttonPanelView.findViewById(R.id.button2);
Button2.setOnClickListener(this);
} else if (chosenRawValueType.equals("another_type") {
//...
ViewGroup insertPoint = (ViewGroup) buttonsPanelContainer;
insertPoint.addView(buttonPanelView, 0, new ViewGroup.LayoutParams(ViewGroup.LayoutParams.MATCH_PARENT, ViewGroup.LayoutParams.WRAP_CONTENT));
抱歉没早点说,没想到会是这样。
那怎么了?
提供的示例也适用于我。搜索此样式属性后,我找到了这个示例:https://developer.android.com/samples/BorderlessButtons/res/layout/sample_main.html Here you can read to apply the style to every button,你在你给的例子中所做的。所以我的意思是有东西覆盖了你的按钮或按钮上的文本设置为白色(或你应用程序的背景颜色)。
我只需要使用
LayoutInflater layoutInflater = LayoutInflater.from(this);
而不是
LayoutInflater layoutInflater = (LayoutInflater) getApplicationContext().getSystemService(Context.LAYOUT_INFLATER_SERVICE);