Setting style=“?android:attr/buttonBarStyle” to parent layout and style=“?android:attr/buttonBarButtonStyle” to buttons make them invisible

纵饮孤独 提交于 2020-01-24 02:22:26

问题


I followed Android recommendation and set style="?android:attr/buttonBarStyle" to parent layout and style="?android:attr/buttonBarButtonStyle" to buttons.

So now my layout is something like this:

<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>

But after setting the style, these buttons have become invisible, although I can still click on them.

Please tell me what is wrong.

Edit: Additional details

Well, I've just created a new project specifically to test this layout and surprisingly it indeed does work.

So to be more precise, actually, I dynamically add this layout to another one, something like this:

<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>

Code:

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));

Sorry to not mention it earlier, I didn't think it could be the case.

So what's wrong?


回答1:


I just needed to use

LayoutInflater layoutInflater = LayoutInflater.from(this);

instead of

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



回答2:


The provided example works for me as well. Searching for this style attribute I found this example: https://developer.android.com/samples/BorderlessButtons/res/layout/sample_main.html Here you can read to apply the style to every button, which you did in the example you gave. So my implication is that something is covering your buttons or the text on the button is set to white (or the background color of your app).



来源:https://stackoverflow.com/questions/32603533/setting-style-androidattr-buttonbarstyle-to-parent-layout-and-style-androi

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!