设置样式="?android:attr / buttonBarStyle"父布局和样式="?android:attr / buttonBarButtonStyle"按钮使它们不可见

时间:2015-09-16 08:37:29

标签: android android-layout android-styles

我遵循了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));

很抱歉不提及它,我不认为可能是这种情况。

那有什么不对?

2 个答案:

答案 0 :(得分:1)

我只需要使用

LayoutInflater layoutInflater = LayoutInflater.from(this);

而不是

LayoutInflater layoutInflater = (LayoutInflater) getApplicationContext().getSystemService(Context.LAYOUT_INFLATER_SERVICE);

答案 1 :(得分:0)

提供的示例也适用于我。搜索此样式属性我找到了这个示例:https://developer.android.com/samples/BorderlessButtons/res/layout/sample_main.html 在这里,您可以阅读以将样式应用于每个按钮,这是您在示例中所做的。所以我的意思是,某些东西覆盖了你的按钮,或者按钮上的文字被设置为白色(或你的应用程序的背景颜色)。