2017-04-25 77 views
1

我已經創建了一個自定義佈局,其中有3個按鈕,可以正常工作。我正在嘗試製作佈局,以便寬度和高度佈局將僅包裹其內容,即無額外的寬度/高度,但我無法這樣做。你能幫助我嗎?如何爲alertdialog自定義佈局換行內容

這裏是我的alertdialog自定義佈局:

<?xml version="1.0" encoding="utf-8"?> 
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" 
    android:orientation="horizontal" 
    android:layout_width="wrap_content" 
    android:layout_height="wrap_content" 
    android:layout_gravity="center" 
    android:background="#00ffffff" 

    > 

    <LinearLayout 
     android:layout_width="wrap_content" 
     android:layout_height="wrap_content" 
     android:orientation="horizontal" 
     android:background="@drawable/rectangle_menu" 
     > 

    <ImageButton 
      android:layout_width="wrap_content" 
      android:layout_height="wrap_content" 
      android:id="@+id/wowButtonId" 
      android:layout_marginLeft="5dp" 
      android:src="@drawable/love_icon" 
      android:background="@drawable/round_button_for_round_menu_like_button" 
     android:layout_gravity="center" 
     /> 

    <ImageButton 
     android:layout_width="40dp" 
     android:layout_height="35dp" 
     android:id="@+id/blehButtonId" 
     android:layout_marginLeft="5dp" 
     android:src="@drawable/bleh" 
     android:background="@drawable/round_button_for_round_menu_like_button" 
     android:layout_gravity="center" 
     /> 

    <ImageButton 
     android:layout_width="wrap_content" 
     android:layout_height="wrap_content" 
     android:id="@+id/dislikeButtonId" 
     android:layout_marginLeft="5dp" 
     android:src="@drawable/dislike_icon" 
     android:background="@drawable/round_button_for_round_menu_like_button" 
     android:layout_gravity="center" 
     /> 
    </LinearLayout> 
</LinearLayout> 

alertDialog適配器代碼來實現:

AlertDialog.Builder builder=new AlertDialog.Builder(context); 
       AlertDialog alertDialog=builder.create(); 
View view1=LayoutInflater.from(context).inflate(R.layout.layout_for_long_like_button_option,null); 

       ImageButton wow=(ImageButton) view1.findViewById(R.id.wowButtonId); 
       ImageButton disLike=(ImageButton) view1.findViewById(R.id.dislikeButtonId); 
       ImageButton bleh=(ImageButton) view1.findViewById(R.id.blehButtonId); 

       wow.setOnClickListener(new View.OnClickListener() { 
        @Override 
        public void onClick(View view) { 
         Toast.makeText(context,"wow",Toast.LENGTH_SHORT).show(); 
        } 
       }); 

       disLike.setOnClickListener(new View.OnClickListener() { 
        @Override 
        public void onClick(View view) { 
         Toast.makeText(context,"dislike",Toast.LENGTH_SHORT).show(); 
        } 
       }); 

       bleh.setOnClickListener(new View.OnClickListener() { 
        @Override 
        public void onClick(View view) { 
         Toast.makeText(context,"bleh",Toast.LENGTH_SHORT).show(); 
        } 
       }); 

       alertDialog.setView(view1); 

       alertDialog.show(); 
+0

你使用什麼,DialogFragment? –

+0

沒有隻是alertdialog在按鈕點擊選項在recylerview適配器 – AAA

+0

告訴我你的alertdialog代碼 – Arti

回答

0

試試這個你在哪裏虛增您的警告對話框類文件...

WindowManager.LayoutParams lp = new WindowManager.LayoutParams(); 
      Window window = alertDialog.getWindow(); 
      lp.copyFrom(window.getAttributes()); 
//This makes the dialog take up the full width 
      lp.width = WindowManager.LayoutParams.WRAP_CONTENT; 
      lp.height = WindowManager.LayoutParams.WRAP_CONTENT; 
      window.setAttributes(lp); 
+0

不工作...... – AAA

0

試試這個,它會幫助你

使用後

dialog.show(); 

​​

dialog.getWindow().setLayout(ViewGroup.LayoutParams.WRAP_CONTENT, ViewGroup.LayoutParams.WRAP_CONTENT); 
1

您可以使用下面的代碼佈景,並顯示對話框

public void showDialog() { 

    LayoutInflater li = LayoutInflater.from(MainActivity.this); 
    View promptsView = li.inflate(R.layout.layout_for_long_like_button_option, null); 

    final TextView txtOk = (TextView) promptsView.findViewById(R.id.txtOk); 
    final TextView txtCancel = (TextView) promptsView.findViewById(R.id.txtCancel); 


    AlertDialog.Builder alertDialogBuilder = new AlertDialog.Builder(BaseActivity.this); 
    alertDialogBuilder.setView(promptsView); 

    final AlertDialog alertDialog = alertDialogBuilder.create(); 
    alertDialog.getWindow().setBackgroundDrawable(new ColorDrawable(android.graphics.Color.TRANSPARENT)); 


    txtOk.setOnClickListener(new View.OnClickListener() { 
     @Override 
     public void onClick(View v) { 

      alertDialog.dismiss(); 

     } 
    }); 


    txtCancel.setOnClickListener(new View.OnClickListener() { 
     @Override 
     public void onClick(View view) { 
      alertDialog.dismiss(); 
     } 
    }); 


    alertDialog.show(); 
} 
+0

這是工作,這使背景透明,但我想像Facebook的方式按鈕長按顯示彈出式菜單。可以幫助我做到這一點嗎?順便說一句,謝謝,我已經標記你的ans正確 – AAA

+0

我已檢查如何自定義對話框,但我有一些Facebook的表情符號庫的參考請檢查此[https://android-arsenal.com/details/1/3839] – Arti

+0

其確定。沒有問題,並感謝您的幫助 – AAA

0

總表y:使用RelativeLayout標記在您的自定義佈局中的根

我在寫作的應用程序中有兩個警告對話框。其中一個沒有包裝內容,而另一個沒有。 LinearLayout標籤在其根部的標籤的高度比它內容真正佔用的空間高出一倍。 我試着在LinearLayout上設置寬度和高度屬性爲wrap_content,但無濟於事。

與RelativeLayout的一個緊緊地包裝其內容。代碼結構來實現,這將是這樣的:

<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" 
android:layout_width="match_parent" 
android:layout_height="match_parent"> 
    <LinearLayout 
    android:layout_width="wrap_content" 
    android:layout_height="wrap_content" 
    > 
    <!-- More widgets --> 
    </LinearLayout> 
</RelativeLayout> 

儘管必須注意,即內部的LinearLayout還應該指定WRAP_CONTENT。你當然可以指定match_parent如果你的意圖是呈現一個細長的對話框,這樣做的意圖,我會把它留給開發者。

Android Studio仍然警告我說LinearLayout佈局或其RelativeLayout父項是無用的。我不認爲這是解決問題的辦法,而只是一個解決辦法。而且,我應該提到,我一直有這些佈局問題與Android的工作。我覺得,這是一種更爲理智的方法,因爲它將代碼修改保持在佈局上。

相關問題